环境变量
您可以使用环境变量来控制 Grafana Alloy 的运行时行为。
支持以下环境变量
GODEBUG
HTTP_PROXY
HTTPS_PROXY
NO_PROXY
PPROF_MUTEX_PROFILING_PERCENT
PPROF_BLOCK_PROFILING_RATE
GOMEMLIMIT
AUTOMEMLIMIT
AUTOMEMLIMIT_EXPERIMENT
GOGC
GOMAXPROCS
GOTRACEBACK
有关 Go 运行时环境变量的更多信息,请参阅 Go runtime 文档。
GODEBUG
您可以使用 GODEBUG
环境变量来控制 Go 运行时中的调试变量。支持以下参数。
参数 | 描述 | 默认值 |
---|---|---|
x509usefallbackroots | 强制回退到 X.509 可信根证书。设置为 1 以启用。 | 0 |
netdns | 强制使用解析器。设置为 go 使用纯 Go 解析器。设置为 cgo 或 win32 使用原生解析器。 | |
netdns | 显示解析器调试信息。设置为 1 获取基本信息。设置为 2 获取详细信息。 |
HTTP_PROXY, HTTPS_PROXY, NO_PROXY
注意
对于许多 Alloy 组件,有一个名为
proxy_from_environment
的属性,必须将其设置为true
,组件的 HTTP 客户端才能使用与代理相关的环境变量。例如,在prometheus.remote_write
组件中,此属性位于endpoint
块内。如果 Alloy 似乎不遵循您的代理配置,请确保您已配置组件以使用代理环境变量。
您可以使用 HTTP_PROXY
环境变量来定义 HTTP 请求的代理服务器主机名或 IP 地址。例如,您可以将代理设置为 http://proxy.example.com
。
您可以使用 HTTPS_PROXY
环境变量以与 HTTP_PROXY
相同的方式定义 HTTPS 请求的代理服务器。
NO_PROXY
环境变量用于定义应从代理中排除的任何主机。NO_PROXY
应包含以下任何选项的逗号分隔列表。
选项 | 描述 | 示例 |
---|---|---|
IP 地址 | 单个 IP 地址(可选端口) | 1.2.3.4 或 1.2.3.4:80 |
CIDR 块 | 共享网络前缀的一组 IP 地址。 | 1.2.3.4/8 |
域 | 域名匹配该名称及其所有子域。带前导“.”的域名仅匹配子域。 | example.com 或 .example.com |
星号 | 单个星号表示不应进行代理。 | * |
PPROF_MUTEX_PROFILING_PERCENT
您可以使用 PPROF_MUTEX_PROFILING_PERCENT
环境变量来定义从 pprof mutex 端点检索的互斥锁配置文件百分比。如果将此变量设置为 5
,则会采样 5% 的互斥锁。默认值为 0.01
。
PPROF_BLOCK_PROFILING_RATE
您可以使用 PPROF_BLOCK_PROFILING_RATE
环境变量来定义跟踪互斥锁的速率。您可以使用以下值与此环境变量。默认值为 10000
。
0
:不跟踪任何内容。1
:跟踪所有互斥锁。- 大于
1
的值:跟踪互斥锁的纳秒数。
GOMEMLIMIT
通常,Go 运行时会在请求时将内存释放回操作系统。在某些环境中,这可能会导致内存不足 (OOM) 错误等问题。您可以使用 GOMEMLIMIT
环境变量设置软内存上限并限制 Alloy 可以使用的最大内存。您可以将 GOMEMLIMIT
设置为带有可选单位后缀的字节数值。支持的单位后缀包括 B
、KiB
、MiB
、GiB
和 TiB
。请勿将 GOMEMLIMIT
环境变量视为硬内存限制。如果需要更多内存,Alloy 进程可以使用更多内存。一个大致的数值是将 GOMEMLIMIT
设置为所需最大内存的 90%。例如,如果您希望内存使用保持在 10GiB
以下,请使用 GOMEMLIMIT=9GiB
。
自动设置 GOMEMLIMIT
GOMEMLIMIT
环境变量可以通过 automemlimit
模块自动设置为可用 cgroup
值的 90%,或者您可以在运行 Alloy 之前显式设置 GOMEMLIMIT
环境变量。您还可以通过将 AUTOMEMLIMIT
环境变量设置为介于 0
和 1.0
之间的浮点值来更改 90% 的比例。如果无法确定限制并且您没有显式定义 GOMEMLIMIT
值,则不会发生任何更改。可以将 AUTOMEMLIMIT_EXPERIMENT
变量设置为 system
,以使用 automemlimit
模块的 System 提供程序,该提供程序根据应用于总系统内存的相同比例设置 GOMEMLIMIT
。由于 cgroup
是 Linux 特有的概念,因此这是在非 Linux 操作系统上使用 automemlimit
模块自动设置 GOMEMLIMIT
的唯一方法。
GOGC
GOGC
环境变量控制触发 Go 垃圾收集的机制。它表示垃圾收集的目标百分比。当新分配数据与上次收集后剩余的实时数据的比率达到此百分比时,将触发收集。如果未提供此变量,则 GOGC 默认为 100
。您可以设置 GOGC=off
以禁用垃圾收集。
将此值与 GOMEMLIMIT
结合配置可以帮助解决 Alloy 占用过多内存的情况。Go 提供了关于理解 GOGC
和 GOMEMLIMIT
的非常详细的指南。
GOMAXPROCS
GOMAXPROCS
环境变量定义了可以同时执行用户级 Go 代码的操作系统线程数上限。此限制不会影响代表 Go 代码在系统调用中阻塞的线程数,并且这些线程不计入 GOMAXPROCS
。
GOTRACEBACK
GOTRACEBACK
环境变量定义了 Go panic 输出的行为。标准的 panic 输出行为通常足以调试和解决问题。如果需要,您可以使用此设置从运行时收集额外信息。支持以下值。
值 | 描述 | 追踪是否包含运行时内部函数 |
---|---|---|
none 或 0 | 完全从 panic 输出中省略 goroutine 堆栈追踪。 | - |
single | 打印当前 goroutine 的堆栈追踪。 | 否 |
all 或 1 | 打印所有用户创建的 goroutine 的堆栈追踪。 | 否 |
system 或 2 | 打印所有用户创建和运行时创建的 goroutine 的堆栈追踪。 | 是 |
crash | 类似于 system ,但也触发 OS 特定的额外行为。例如,在 Unix 系统上,这会引发 SIGABRT 以触发核心转储。 | 是 |
wer | 类似于 crash ,但不禁用 Windows 错误报告。 | 是 |