使用环境变量的日志条件输出不起作用



我正在使用 Logstash 将日志数据发送到 Elasticsearch(当然(,但我的一些最终用户也希望将数据发送到辅助 csv 文件,以便他们可以自己处理。我正在尝试使用环境变量来确定我们是否需要输出到辅助文件,如果是,该文件应该位于何处。

我的日志库看起来像这样:

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版本。

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

实际上这是一个非常好的问题,正如 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}" 
      }
}

只是一个快速更新,因为在条件中使用变量的 Logstash 7.17 按预期工作:https://github.com/elastic/logstash/issues/5115#issuecomment-1022123571

最新更新