接着之前的文章,这篇介绍如何在logstash配置中使用环境变量。
概述:
▷ 您可以使用在Logstash插件的配置中设置环境变量引用${var}。
▷ 在Logstash启动时,每个引用都将替换为环境变量的值。
▷ 替换是区分大小写的。
▷ 对未定义变量的引用会引发Logstash配置错误。
▷ 您可以使用表单提供默认值${var:default value}。如果未定义环境变量则使用默认值。
▷ 您可以在任何插件选项类型中添加环境变量引用:string,number,boolean,array或hash。
▷ 环境变量是不可变的。如果更新环境变量,则必须重新启动Logstash以获取更新的值。
以下几个示例将介绍如何使用环境变量来设置一些常用配置选项的值。
示例1:设置TCP端口
1.1 不为变量指定默认值
1 2 3 4 5 |
input { tcp { port => "${TCP_PORT}" } } |
如果我们给TCP_PORT设置一个值:
1 |
export TCP_PORT = 12345 |
则在启动时,Logstash使用以下配置:
1 2 3 4 5 |
input { tcp { port => 12345 } } |
如果TCP_PORT未设置环境变量,Logstash将返回配置错误!!!
1.2 为变量指定默认值
1 2 3 4 5 |
input { tcp { port => "${TCP_PORT:54321}" } } |
现在如果变量未定义,则不会返回配置错误,Logstash将使用默认值:
1 2 3 4 5 |
input { tcp { port => 54321 } } |
如果定义了环境变量,Logstash将使用为变量指定的值而不是默认值!!!
示例2:设置标签的值
这是一个使用环境变量来设置标记值的示例:
1 2 3 4 5 |
filter { mutate { add_tag => [ "tag1", "${ENV_TAG}" ] } } |
我们给变量ENV_TAG设置一个值:
1 |
export ENV_TAG="tag2" |
在启动时,Logstash使用以下配置:
1 2 3 4 5 |
filter { mutate { add_tag => [ "tag1", "tag2" ] } } |
示例3:设置文件路径
这是一个使用环境变量设置日志文件路径的示例:
1 2 3 4 5 6 7 |
filter { mutate { add_field => { "my_path" => "${HOME}/file.log" } } } |
我们给变量HOME设置一个值:
1 |
export HOME="/path" |
在启动时,Logstash使用以下配置:
1 2 3 4 5 6 7 |
filter { mutate { add_field => { "my_path" => "/path/file.log" } } } |
文章内容来至于elastic官方文档,链接如下所示:
1 |
https://www.elastic.co/guide/en/logstash/current/environment-variables.html |