菜单
开源

运行命令

run命令将在收到中断之前在前景运行Alloy。

用法

用法

shell
alloy run [<FLAG> ...] <PATH_NAME>

替换以下内容

  • <FLAG>:一个或多个定义命令输入和输出的标志。
  • <PATH_NAME>:必需。Alloy配置文件/目录路径。

如果没有提供<PATH_NAME>参数,或者如果配置路径无法加载或在初始化加载期间包含错误,则run命令将立即退出并显示错误消息。

如果提供给<PATH_NAME>参数一个目录路径,Alloy将找到*.alloy文件(忽略嵌套目录)并将它们作为单个配置源加载。但是,组件名称必须在所有Alloy配置文件中是<强>唯一的,且配置块不得重复。

如果配置文件的后续重新加载失败,Alloy将继续运行,可能会根据失败的性质将组件标记为不健康。在这种情况下,Alloy将保持最后有效的状态继续运行。

run启动一个HTTP服务器,该服务器公开关于自身及其组件的指标。HTTP服务器还公开一个UI在/,用于调试运行中的组件。

支持以下标志

  • --server.http.enable-pprof:启用/debug/pprof分析端点。(默认true)。
  • --server.http.memory-addr:监听内存中的HTTP流量地址(默认alloy.internal:12345)。
  • --server.http.listen-addr:监听HTTP流量地址(默认127.0.0.1:12345)。
  • --server.http.ui-path-prefix:UI公开的基本路径(默认/)。
  • --storage.path:组件可以存储数据的基本目录(默认data-alloy/)。
  • --disable-reporting:禁用数据收集(默认false)。
  • --cluster.enabled:以集群模式启动Alloy(默认false)。
  • --cluster.node-name:用于此节点的名称(默认为环境的计算机名称)。
  • --cluster.join-addresses:要加入集群的地址列表,用逗号分隔(默认"")。与--cluster.discover-peers互斥。
  • --cluster.discover-peers:用于发现对等节点的键值对列表(默认"")。与--cluster.join-addresses互斥。
  • --cluster.rejoin-interval:重新加入对等体列表的频率(默认"60s")。
  • --cluster.advertise-address:向其他集群节点公开的地址(默认 "")。
  • --cluster.advertise-interfaces:用于推断公开展示地址所使用的接口列表。设置为 all 以使用系统上所有可用的网络接口。(默认 "eth0,en0")。
  • --cluster.max-join-peers:从发现的集合中要加入的对等节点数量(默认 5)。
  • --cluster.name:防止没有此标识符的节点加入集群的名称(默认 "")。
  • --config.format:源文件的格式。受支持的格式:alloyotelcolprometheuspromtailstatic(默认 "alloy")。
  • --config.bypass-conversion-errors:启用在转换时跳过错误(默认 false)。
  • --config.extra-args:转换器使用的原始格式的额外参数。
  • --stability.level:运行功能所需的最小允许稳定性级别。支持值:ExperimentalPublic-previewGenerally-available(默认 "Generally-available")。
  • --feature.community-components.enabled:启用社区组件(默认 false)。

更新配置文件

可以通过以下方式从磁盘重新加载配置文件:

  • /-/reload 端点发送 HTTP POST 请求。
  • 向 Alloy 进程发送 SIGHUP 信号。

发生此情况时,组件控制器将与配置文件中指定的最新组件集同步运行组件集。在重新加载后不再定义在配置文件中的组件将关闭,并且自上次重新加载以来已添加到配置文件中的组件将创建。

重新加载后,组件控制器管理的所有组件都将重新评估。

允许的稳定性级别

默认情况下,Alloy 仅允许您使用标记为 Generally available 的功能。

要使用 ExperimentalPublic preview 功能,请将 --stability.level 标志设置为要使用的级别。

  • --stability.level=experimental:使用标记为 Experimental 和以上的功能。
  • --stability.level=public-preview:使用标记为 Public preview 和以上的功能。
  • --stability.level=generally-available:使用标记为 Generally available 的功能。

小心

--stability.level 设置为 experimentalpublic-preview 可能会启用通常标记为 Generally available 的项目的 ExperimentalPublic preview 行为,例如:

  • 组件控制器
  • 主配置或导入模块中的组件
  • 主配置中的配置块

有关每个稳定性级别的定义,请参阅 Grafana Labs 的发布生命周期

聚类

--cluster.enabled 命令行参数以 集群 模式启动 Alloy。其余的 --cluster.* 命令行标志可用于配置节点如何发现和连接到彼此。

集群中每个成员的名称必须唯一。尝试使用冲突名称加入的节点将被拒绝,并将回退到启动自己的新集群。

对等方通过内置 HTTP 服务器上的 HTTP/2 进行通信。每个节点必须配置为在 --server.http.listen-addr--cluster.advertise-address 中定义或推断的地址上接受连接。

如果没有显式设置 --cluster.advertise-address 标志,Alloy 将尝试从 --cluster.advertise-interfaces 推断一个合适的地址。如果没有显式设置 --cluster.advertise-interfaces,Alloy 将从 eth0en0 本地网络接口中推断一个。如果不能确定公开展示地址,Alloy 将无法启动。由于 Windows 不使用接口名称 eth0en0,因此 Windows 用户必须显式传递至少一个有效的网络接口的值用于 --cluster.advertise-interfaces 或一个值用于 --cluster.advertise-address

--cluster.join-addresses 提供的以逗号分隔的地址列表中,可以是带有可选端口的 IP 地址,也可以是用于查找的 DNS SRV 记录。未明确指定的情况下,地址列表上的端口号默认为 HTTP 监听器使用的端口。我们建议您将尽可能多的节点上的端口号对齐,以简化部署过程。

命令行标志 --cluster.discover-peers 预期一个以 provider=XXX key=val key=val ... 形式的元组列表。集群使用 go-discover 包来发现对等节点并获取它们的 IP 地址,基于选择的提供者和它支持的过滤键值。集群支持 go-discover 中的默认提供者集,并在上面注册了 k8s 提供者。

如果一个元组对的键或值中包含空格、反斜杠或双引号,则必须用双引号引起来。在此引号内的字符串中,可以通过反斜杠转义双引号或反斜杠自身。

--cluster.rejoin-interval 标志定义了每个节点基于 --cluster.join-addresses--cluster.discover-peers 标志的内容重新发现对等节点并尝试重新加入它们的频率。如果在初始引导失败时,此操作对于解决脑裂问题非常有用,并且有助于在动态环境中管理集群。要禁用此行为,将 --cluster.rejoin-interval 标志设置为 "0s"

使用 --cluster.join-addresses--cluster.discover-peers 标志进行的对等节点发现仅在启动时发生。之后,集群节点依赖于相互之间的八卦消息来收敛到集群的状态。

用于引导新集群的第一个节点(也称为“种子节点”)可以省略指定要加入的对等节点的标志,或者尝试将自己连接到。

要加入或重新加入集群,Alloy 会尝试连接到由 --cluster.max-join-peers 标志限制的特定数量的对等节点。对于大型集群,此标志可能很有用,因为连接到大量的对等节点可能是一项昂贵的操作。要禁用此行为,请将 --cluster.max-join-peers 标志设置为 0。如果 --cluster.max-join-peers 的值高于发现的对等节点的数量,Alloy 将连接到所有这些节点。

--cluster.name 标志可以用于防止集群意外合并。当提供了 --cluster.name 时,节点将只加入具有相同集群名称值的对等节点。默认情况下,集群名称为空,并且未设置此标志的任何节点都可以加入。尝试使用错误的 --cluster.name 加入集群将会导致“加入 memberlist 失败”的错误。

集群状态

集群化的 Alloys 处于以下三种状态之一

  • 查看器:Alloy 仅具有集群的只读视图,不参与工作负载分配。
  • 参与者:Alloy 正在参与启用集群的组件的工作负载分配。
  • 终止:Alloy 正在关闭,并将不再分配任何新的工作给自己。

每个 Alloy 初始加入集群时处于查看器状态,然后在启动过程完成后过渡到参与者状态。然后,每个 Alloy 在关闭时过渡到终止状态。

UI 的集群页面中显示了集群化 Alloy 的当前状态。

配置转换

公测预览:这是一个 公测预览 组件。公测预览组件可能受到破坏性更改的影响,并且可能被具有相同用例的等效功能所取代。必须将 stability.level 标志设置为 public-preview 或以下才能使用此组件。

当您使用除 alloy 之外的值作为 --config.format 命令行参数时,Alloy 会将配置文件从源格式转换为 Alloy 并立即使用新的配置运行。此转换使用在 alloy convert 文档中描述的转换 API。

如果您包括 --config.bypass-conversion-errors 命令行参数,Alloy 将忽略转换器生成的任何错误。使用此参数时要谨慎,因为生成的转换可能不会等同于原始配置。

包含 --config.extra-args 以将原始格式传递给转换器的额外命令行标志。有关 extra-args 如何工作的更多详细信息,请参阅 alloy convert