菜单
开源

环境变量

您可以使用环境变量来控制 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 解析器。设置为 cgowin32 使用原生解析器。
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.41.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 设置为带有可选单位后缀的字节数值。支持的单位后缀包括 BKiBMiBGiBTiB。请勿将 GOMEMLIMIT 环境变量视为硬内存限制。如果需要更多内存,Alloy 进程可以使用更多内存。一个大致的数值是将 GOMEMLIMIT 设置为所需最大内存的 90%。例如,如果您希望内存使用保持在 10GiB 以下,请使用 GOMEMLIMIT=9GiB

自动设置 GOMEMLIMIT

GOMEMLIMIT 环境变量可以通过 automemlimit 模块自动设置为可用 cgroup 值的 90%,或者您可以在运行 Alloy 之前显式设置 GOMEMLIMIT 环境变量。您还可以通过将 AUTOMEMLIMIT 环境变量设置为介于 01.0 之间的浮点值来更改 90% 的比例。如果无法确定限制并且您没有显式定义 GOMEMLIMIT 值,则不会发生任何更改。可以将 AUTOMEMLIMIT_EXPERIMENT 变量设置为 system,以使用 automemlimit 模块的 System 提供程序,该提供程序根据应用于总系统内存的相同比例设置 GOMEMLIMIT。由于 cgroup 是 Linux 特有的概念,因此这是在非 Linux 操作系统上使用 automemlimit 模块自动设置 GOMEMLIMIT 的唯一方法。

GOGC

GOGC 环境变量控制触发 Go 垃圾收集的机制。它表示垃圾收集的目标百分比。当新分配数据与上次收集后剩余的实时数据的比率达到此百分比时,将触发收集。如果未提供此变量,则 GOGC 默认为 100。您可以设置 GOGC=off 以禁用垃圾收集。

将此值与 GOMEMLIMIT 结合配置可以帮助解决 Alloy 占用过多内存的情况。Go 提供了关于理解 GOGCGOMEMLIMIT非常详细的指南

GOMAXPROCS

GOMAXPROCS 环境变量定义了可以同时执行用户级 Go 代码的操作系统线程数上限。此限制不会影响代表 Go 代码在系统调用中阻塞的线程数,并且这些线程不计入 GOMAXPROCS

GOTRACEBACK

GOTRACEBACK 环境变量定义了 Go panic 输出的行为。标准的 panic 输出行为通常足以调试和解决问题。如果需要,您可以使用此设置从运行时收集额外信息。支持以下值。

描述追踪是否包含运行时内部函数
none0完全从 panic 输出中省略 goroutine 堆栈追踪。-
single打印当前 goroutine 的堆栈追踪。
all1打印所有用户创建的 goroutine 的堆栈追踪。
system2打印所有用户创建和运行时创建的 goroutine 的堆栈追踪。
crash类似于 system,但也触发 OS 特定的额外行为。例如,在 Unix 系统上,这会引发 SIGABRT 以触发核心转储。
wer类似于 crash,但不禁用 Windows 错误报告。