在配置中使用环境变量
编辑在配置中使用环境变量
编辑您可以在配置文件中使用环境变量引用来设置在部署期间需要配置的值。为此,请使用
${VAR}
其中 VAR
是环境变量的名称。
每个变量引用在启动时都会被环境变量的值替换。替换区分大小写,并在解析 YAML 文件之前发生。对未定义变量的引用将被替换为空字符串,除非您指定默认值或自定义错误文本。
要指定默认值,请使用
${VAR:default_value}
其中 default_value
是如果环境变量未定义要使用的值。
要指定自定义错误文本,请使用
${VAR:?error_text}
其中 error_text
是自定义文本,如果无法扩展环境变量,则会将其附加到错误消息前面。
如果需要在配置文件中使用特殊字符,请使用 $
转义扩展。例如,您可以使用 $${
或 $}
转义 ${
或 }
。
更改环境变量的值后,需要重新启动 Metricbeat 以获取新值。
您还可以使用 -E
选项从命令行覆盖配置设置时指定环境变量。例如
-E name=${NAME}
示例
编辑以下是一些使用环境变量的配置示例以及每个配置替换后的样子
配置源 | 环境设置 | 替换后的配置 |
---|---|---|
|
|
|
|
无设置 |
|
|
无设置 |
|
|
|
|
|
无设置 |
无。返回一个错误消息,该消息前面附加了自定义文本。 |
|
|
|
在环境变量中指定复杂对象
编辑您可以使用类似 JSON 的语法在环境变量中指定复杂对象,例如列表或字典。
与 JSON 一样,字典和列表使用 {}
和 []
构造。但与 JSON 不同的是,语法允许使用尾随逗号以及略微不同的字符串引用规则。为了方便简单设置并使您更容易在 shell 中混合使用引号,字符串可以不带引号、单引号或双引号。顶层数组不需要括号 ([]
)。
例如,以下环境变量设置为一个列表
ES_HOSTS="10.45.3.2:9220,10.45.3.1:9230"
您可以在配置文件中引用此变量
output.elasticsearch: hosts: '${ES_HOSTS}'
当 Metricbeat 加载配置文件时,它会解析环境变量并将其替换为指定的列表,然后再读取 hosts
设置。
请勿使用双引号 ("
) 来包装正则表达式,否则反斜杠 (\
) 将被解释为转义字符。