菜单
开源

run 命令

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)。
  • --disable-support-bundle:禁用 支持包 端点 (默认值 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:用于防止没有此标识符的节点加入集群的名称 (默认值 "")。
  • --cluster.enable-tls:指定是否应将 TLS 用于对等节点之间的通信 (默认值 false)。
  • --cluster.tls-ca-path:用于通过 TLS 进行对等节点通信的 CA 证书文件的路径。
  • --cluster.tls-cert-path:用于通过 TLS 进行对等节点通信的证书文件的路径。
  • --cluster.tls-key-path:用于通过 TLS 进行对等节点通信的密钥文件的路径。
  • --cluster.tls-server-name:用于通过 TLS 进行对等节点通信的服务器名称。
  • --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 仅允许您使用标记为正式发布的功能。

要使用实验性公开预览版功能,请将 --stability.level 标志设置为您要使用的级别

  • --stability.level=experimental:使用标记为实验性及以上的功能。
  • --stability.level=public-preview:使用标记为公开预览版及以上的功能。
  • --stability.level=generally-available:使用标记为正式发布的功能。

注意

--stability.level 设置为 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 和 A/AAAA 记录)。在这两种情况下,都可以使用 :<port> 后缀指定端口号。如果未提供端口,则使用用于 HTTP 侦听器的默认端口。如果您未显式提供端口号,则必须确保所有实例都为 HTTP 侦听器使用相同的端口。

可以设置 --cluster.enable-tls 标志以启用对等通信的 TLS。需要其他参数来配置 TLS 客户端,包括 CA 证书、TLS 证书、密钥和服务器名称。

--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 标志发现对等节点仅在启动时发生。之后,集群节点依赖于相互交换 gossip 消息来收敛到集群的状态。

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

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

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

集群状态

集群 Alloy 处于以下三种状态之一

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

每个 Alloy 最初以查看器状态加入集群,然后在进程启动完成后转换为参与者状态。然后,每个 Alloy 在关闭时转换为终止状态。

集群 Alloy 的当前状态显示在 UI 中的集群页面上。

配置转换

公开预览版:这是一个公开预览版组件。公开预览版组件可能会发生重大更改,并且可能会被涵盖相同用例的等效功能所取代。stability.level 标志必须设置为 public-preview 或更低才能使用该组件。

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

如果包含 --config.bypass-conversion-errors 命令行参数,Alloy 将忽略来自转换器的错误。请谨慎使用此参数,因为生成的转换可能与原始配置不相等。

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