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"
}
}
}
推荐文章: