使用环境变量无效的Logstash条件输出

时间:2017-03-20 20:15:39

标签: configuration environment-variables logstash

我正在使用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版。

任何建议或见解都将不胜感激。

1 个答案:

答案 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}" 
      }
}