run
命令
run
命令在接收到中断信号前,以前台方式运行Alloy。
用法
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
:监听 (默认alloy.internal:12345
) 的内存 HTTP 流量的地址。--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
:源文件的格式。支持格式:alloy
、otelcol
、prometheus
、promtail
、static
(默认"alloy"
).--config.bypass-conversion-errors
:启用在转换时跳过错误 (默认false
).--config.extra-args
:转换器使用的原始格式的额外参数。--stability.level
:运行所需的功能的最小允许稳定性级别。支持值:experimental
、public-preview
、generally-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
设置为experimental
或public-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将从本地网络接口eth0
和en0
推断一个。如果Alloy无法确定广告地址,则无法启动。由于Windows不使用接口名称eth0
或en0
,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
标志发现对等节点仅在启动时发生。之后,集群节点依赖于彼此之间的八卦消息来收敛到集群的状态。
用于引导新集群的第一个节点(也称为“种子节点”)可以省略指定要加入的对等节点的标志,或者可以尝试连接到自身。
为了加入或重新加入集群,Alloy 尝试连接到由 --cluster.max-join-peers
标志限制的一定数量的对等节点。对于大型集群来说,此标志非常有用,因为连接到大量对等节点可能是一项昂贵的操作。要禁用此行为,将 --cluster.max-join-peers
标志设置为 0。如果 --cluster.max-join-peers
的值高于发现的节点数,Alloy 将连接到所有节点。
--cluster.name
标志可以用来防止集群意外合并。当提供 --cluster.name
时,节点仅加入与相同集群名称值的对等节点。默认情况下,集群名称为空,任何未设置该标志的节点都可以加入。尝试使用错误的 --cluster.name
加入集群会导致“无法加入 memberlist”错误。
集群状态
集群化的 Alloy 处于以下三种状态之一
- 查看器:Alloy 只有对集群的只读视图,不参与工作负载分配。
- 参与者:Alloy 正在参与已启用集群功能的工作负载分配。
- 终止:Alloy 正在关闭,不再为自己分配新工作。
每个 Alloy 首先以查看器状态加入集群,然后在进程启动完成后过渡到参与者状态。然后每个 Alloy 在关闭时过渡到终止状态。
集群化 Alloy 的当前状态在 UI 中的集群页面显示。
配置转换
公开预览:这是一个 公开预览 组件。公开预览组件可能存在破坏性更改,并可能被具有相同用例的等效功能所取代。必须将
stability.level
标志设置为public-preview
或更低才能使用此组件。
当使用除 alloy
之外值的 --config.format
命令行参数时,Alloy 将配置文件从源格式转换为 Alloy,并立即使用新配置启动运行。此转换使用在 alloy convert 文档中描述的转换器 API。
如果您包括 --config.bypass-conversion-errors
命令行参数,Alloy 将忽略转换器中的错误。谨慎使用此参数,因为结果转换可能不等于原始配置。
使用 --config.extra-args
传递来自原始格式的额外命令行标志到转换器。有关 extra-args
如何工作的更多详细信息,请参阅 alloy convert。