Logstash output::stdout 忽略条件语句
Logstash output::stdout ignores conditional statement
我遇到了一个问题,因为如果 DEBUG
环境变量设置为 true
,我想让 logstash(版本 7.11.1)另外将输出重定向到 stdout。但似乎,只要在 output
部分的任何位置定义了此插件,它就会一直将输出发送到 stdout
:
output {
if [@metadata][service] == "application" {
elasticsearch {
hosts => "${ELASTICSEARCH_HOST}"
manage_template => false
index => "app-%{+YYYY.MM.dd}"
}
}
if "[${DEBUG}]" == "true" {
stdout {}
}
}
我已经尝试过其他永远不可能的语句 true
,但它总是打印到标准输出。
我是不是做错了什么,或者这是 logstash 的标准?
[更新]
显然,docker 图像 (logstash:7.11.1
) 中有默认的 logstash.conf
文件,默认包含 output { stdout {} }
。这就是为什么我的 stdout
.
总是收到提要
无论如何,在覆盖 logstash.conf
之后,我遇到了使用下面的答案很容易解决的问题。
谢谢!
似乎还不支持条件中的环境变量 (https://github.com/elastic/logstash/issues/5115)。解决方法是将 DEBUG env var 分配给元数据字段,然后在条件中使用该元数据字段。例如,
filter {
mutate {
add_field => { "[@metadata][debug]" => "${DEBUG}" }
}
}
output {
...
if [@metadata][debug] == "true" {
stdout {}
}
}
不支持在条件中引用环境变量。 github 上有一个 open issue 请求它。它自五年前开放以来一直没有得到解决,我不希望这种情况会改变。
解决方法是在过滤器中引用环境变量。
filter { mutate { add_field => { "[@metadata][debug]" => "${DEBUG}" } } }
然后在条件
中引用它
if [@metadata][debug] == "true" { ...
我遇到了一个问题,因为如果 DEBUG
环境变量设置为 true
,我想让 logstash(版本 7.11.1)另外将输出重定向到 stdout。但似乎,只要在 output
部分的任何位置定义了此插件,它就会一直将输出发送到 stdout
:
output {
if [@metadata][service] == "application" {
elasticsearch {
hosts => "${ELASTICSEARCH_HOST}"
manage_template => false
index => "app-%{+YYYY.MM.dd}"
}
}
if "[${DEBUG}]" == "true" {
stdout {}
}
}
我已经尝试过其他永远不可能的语句 true
,但它总是打印到标准输出。
我是不是做错了什么,或者这是 logstash 的标准?
[更新]
显然,docker 图像 (logstash:7.11.1
) 中有默认的 logstash.conf
文件,默认包含 output { stdout {} }
。这就是为什么我的 stdout
.
无论如何,在覆盖 logstash.conf
之后,我遇到了使用下面的答案很容易解决的问题。
谢谢!
似乎还不支持条件中的环境变量 (https://github.com/elastic/logstash/issues/5115)。解决方法是将 DEBUG env var 分配给元数据字段,然后在条件中使用该元数据字段。例如,
filter {
mutate {
add_field => { "[@metadata][debug]" => "${DEBUG}" }
}
}
output {
...
if [@metadata][debug] == "true" {
stdout {}
}
}
不支持在条件中引用环境变量。 github 上有一个 open issue 请求它。它自五年前开放以来一直没有得到解决,我不希望这种情况会改变。
解决方法是在过滤器中引用环境变量。
filter { mutate { add_field => { "[@metadata][debug]" => "${DEBUG}" } } }
然后在条件
中引用它if [@metadata][debug] == "true" { ...