我正在使用Logstash将日志数据发送到Elasticsearch(当然),但我的一些最终用户也希望将数据发送到辅助csv文件,以便他们可以自己进行处理。我正在尝试使用环境变量来确定是否需要输出到辅助文件,如果是,那么该文件应该存在。
我的Logstash看起来像这样:
input {
. . .
}
filter {
. . .
}
output {
elasticsearch {
. . .
}
if "${SECONDARY_OUTPUT_FILE:noval}" != "noval" {
csv {
fields => . . .
path => "${ SECONDARY_OUTPUT_FILE:noval}"
}
}
}
当SECONDARY_OUTPUT_FILE有一个值时,它可以正常工作。如果没有,Logstash会将csv输出写入名为“noval”的文件。我的结论是if语句与环境变量无法正常工作。
我在Windows 7计算机上使用Logstash 2.3.2版。
任何建议或见解都将不胜感激。
答案 0 :(得分:3)
实际上这是一个非常好的问题,正如 IrlJidel 在该问题上提到的github上关于此主题仍然有一个持续的增强,该问题的解决方法将是:
mutate {
add_field => { "[@metadata][SECONDARY_OUTPUT_FILE]" => "${SECONDARY_OUTPUT_FILE:noval}" }
}
if [@metadata][SECONDARY_OUTPUT_FILE] != "noval" {
csv {
fields => . . .
path => "${SECONDARY_OUTPUT_FILE}"
}
}