环境变量
您可以使用环境变量来控制 Grafana Alloy 的运行时行为。
支持以下环境变量
GODEBUGHTTP_PROXYHTTPS_PROXYNO_PROXYPPROF_MUTEX_PROFILING_PERCENTPPROF_BLOCK_PROFILING_RATEGOMEMLIMITAUTOMEMLIMITAUTOMEMLIMIT_EXPERIMENTGOGCGOMAXPROCSGOTRACEBACK
有关 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 错误报告。 | 是 |



