ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ### 概览 + 你可以在配置中使用`${var}`为Logstash插件设置环境变量引用. + 在Logstash启动的时候,每个引用都会被替换为环境变量的值. + 替换是区分大小写的 + 引用一个未定义的变量将触发一个Logstash配置错误(不知道这里说的未定义是变量未定义还是变量值未定义,但参考下一条,大概率是变量值未定义.根据后面的示例看,应该是变量值未定义).原文:References to undefined variables raise a Logstash configuration error. + 你可以使用`${var:default value}`这种格式来定义一个变量的默认值.Logstash将在环境变量未定义的情况下使用默认值.原文:You can give a default value by using the form ${var:default value}. Logstash uses the default value if the environment variable is undefined. + 你可以添加环境变量引用在任何插件选项类型中:string, number, boolean, array, or hash. + 环境变量是不可变的(非动态生效).如果你更新了环境变量的值,你需要重启Logstash来让新的变量值生效. ### 示例 下面的示例为你展示如何使用环境变量来设置一些常用的配置选项的值. #### 设置TCP端口 这是一个使用环境变量设置TCP端口的示例: ```ruby input { tcp { port => "${TCP_PORT}" } } ``` 现在让我们设置`TCP_PORT`的值: ```ruby export TCP_PORT=12345 ``` Logstash在启动的时候使用下面的配置: ```ruby input { tcp { port => 12345 } } ``` 如果`TCP_PORT`环境变量没有设置,Logstash会返回一个配置错误. 你可以通过指定一个默认值来解决这个问题: ```ruby input { tcp { port => "${TCP_PORT:54321}" } } ``` 现在,如果变量值未定义Logstash会使用默认值来而不是返回一个配置错误: ```ruby input { tcp { port => 54321 } } ``` 如果定义了环境变量,Logstash会使用指定的值而非默认值. #### 设置标签的值 这是一个使用变量设置标签值的示例: ```ruby filter { mutate { add_tag => [ "tag1", "${ENV_TAG}" ] } } ``` 让我们设置`ENV_TAG`的值: ```shell export ENV_TAG="tag2" ``` Logstash在启动的时候将会使用下面的配置: ```ruby filter { mutate { add_tag => [ "tag1", "tag2" ] } } ``` #### 设置文件路径 下面是用环境变量设置日志文件路径的一个示例: ```ruby filter { mutate { add_field => { "my_path" => "${HOME}/file.log" } } } ``` 让我们设置`HOME`的值: ```shell export HOME="/path" ``` Logstash在启动的时候会使用下面的配置: ```ruby filter { mutate { add_field => { "my_path" => "/path/file.log" } } } ```