9.在配置中使用环境变量.md

您可以在配置文件中使用环境变量引用来设置部署期间需要可配置的值。为此,请使用:

${VAR}

其中VAR是环境变量的名称。

每个变量引用在启动时都被环境变量的值替换。替换是区分大小写的,并且发生在解析YAML文件之前。除非您指定默认值或自定义错误文本,否则对未定义变量的引用将被空字符串替换。

要指定默认值,请使用:

${VAR:default_value}

其中default_value是环境变量未定义时使用的值。

要指定自定义错误文本,请使用:

${VAR:?error_text}

其中error_text是自定义文本,如果无法展开环境变量,将在错误消息之前添加该文本。

如果您需要在配置文件中使用特殊字符,请使用$来转义扩展。例如,您可以使用$${$}转义${}

更改环境变量的值后,您需要重新启动FileBeat以获取新值。

当使用-E选项从命令行覆盖配置设置时,您还可以指定环境变量。例如:

-E name=${NAME}

示例

以下是一些使用环境变量的配置示例,以及每个配置在替换后的样子:

配置源 环境设置 更换后的配置
name: ${NAME} export NAME=elastic name: elastic
name: ${NAME} no setting name:
name: ${NAME:beats} no setting name: beats
name: ${NAME:beats} export NAME=elastic name: elastic
name: ${NAME:?You need to set the NAME environment variable} no setting None. Returns an error message that’s prepended with the custom text.
name: ${NAME:?You need to set the NAME environment variable} export NAME=elastic name: elastic

在环境变量中指定复杂对象

您可以使用类似JSON的语法在环境变量中指定复杂对象,例如列表或字典。

与JSON一样,字典和列表是使用{}[]构建的。但与JSON不同的是,语法允许尾随逗号和稍微不同的字符串引用规则。字符串可以是无引号、单引号或双引号,以方便简单设置,并使您更容易在shell中混合引用用法。顶层数组不需要括号([])。

例如,以下环境变量设置为列表:

ES_HOSTS="10.45.3.2:9220,10.45.3.1:9230"

您可以在配置文件中引用此变量:

output.elasticsearch:
  hosts: '${ES_HOSTS}'

当FileBeat加载配置文件时,它会解析环境变量并在读取hosts设置之前将其替换为指定的列表。

不要使用双引号(”)来包装正则表达式,否则反斜杠(\)将被解释为转义字符。


9.在配置中使用环境变量.md
http://blog.lujinkai.cn/运维/ELK/filebeats/How to guides/9.在配置中使用环境变量/
作者
像方便面一样的男子
发布于
2023年12月5日
许可协议