6.4. 使用环境变量
概览
- 在 Logstash 插件的配置中你可以使用 
${变量}的方式设置环境变量引用。 - 在 Logstash 启动过程中,每个引用都会被环境变量的值替换。
 - 替换是大小写敏感的。
 - 引用未定义的变量会引起一个 Logstash 配置的错误。
 - 可以通过使用 
${变量:default 值}的方式指定一个默认值。当环境变量未定义时,Logstash 将使用默认值。 - 你可以在任意插件配置项类型中添加环境变量引用:字符串,数值,布尔,数组或者哈希类型。
 - 环境变量是不可改变的。如果你更新了环境变量,只有通过重启 Logstash 才能拿到更新后的值。
 
示例
以下示例将带你展示如何使用环境变量设置一些常见的配置项的值。
设置 TCP 端口
以下是一个使用环境变量设置 TCP 端口的例子:
input {
  tcp {
    port => "${TCP_PORT}"
  }
}
现在让我们看看 TCP_PORT 设置的值:
export TCP_PORT=12345
在启动时,Logstash 使用以下配置:
input {
  tcp {
    port => 12345
  }
}
如果 TCP_PORT 环境变量没有设置,Logstash 会返回一个配置错误。
可以通过指定默认值的方式来解决这个问题:
input {
  tcp {
    port => "${TCP_PORT:54321}"
  }
}
现在如果没有设置环境变量的话 Logstash 就不会返回错误了,而是使用默认值:
input {
  tcp {
    port => 54321
  }
}
如果环境变量设置了的话,Logstash 使用设置的值而不是默认的值。
设置标签值
以下是一个使用环境变量设置标签值的例子:
filter {
  mutate {
    add_tag => [ "tag1", "${ENV_TAG}" ]
  }
}
让我们设置下 ENV_TAG 的值:
export ENV_TAG="tag2"
在启动时,Logstash 使用以下配置:
filter {
  mutate {
    add_tag => [ "tag1", "tag2" ]
  }
}
设置文件路径
以下示例使用环境变量设置日志文件的路径:
filter {
  mutate {
    add_field => {
      "my_path" => "${HOME}/file.log"
    }
  }
}
让我们设置下 HOME 变量的值:
export HOME="/path"
在启动时,Logstash 使用以下配置:
filter {
  mutate {
    add_field => {
      "my_path" => "/path/file.log"
    }
  }
}
                    
                    
                    
                
          
Logstash 中文文档
                    
                    
            
            
                关于 LearnKu
              
                    
                    
                    
 
推荐文章: