首页 > 解决方案 > Logstash 过滤器如何找出哪些事件已被丢弃?

问题描述

我有 LogStash 过滤器,我想知道我的日志文件中的哪些事件已被删除,因为我在 logstash 输出文件中看不到它们。怎么做?

我的过滤器如下所示:

filter {
  grok {
    patterns_dir => "C:\logstash-7.4.2\patterns"
    match => { "message" => "^\[%{TIMESTAMP_ISO8601:timestamp}\]\[%{LOGLEVEL:level}\]\[%{TThread:thread}\]\[%{JAVACLASS:class}\] %{GREEDYDATA:msg}" }
  }
  if "_grokparsefailure" in [tags] {
    drop{}
  }
  

}

标签: logstashlogstash-groklogstash-filter

解决方案


当您drop的管道中的事件停止存在时,您将不会在任何输出中看到它,您无法删除事件并将其放在输出中。

在您的情况下,您正在删除与grok过滤器不匹配的事件,如果您想知道哪些事件无法解析,则需要停止删除这些事件,然后将这些事件重定向到另一个输出以进行更好的分析,如果您希望您也可以将 then 保留在相同的输出中并稍后过滤。

您可以使用类似以下配置的内容。

output {
  if "_grokparsefailure" in [tags] {
    output to store failed events
  }
  if "_grokparsefailure" not in [tags] {
    normal output for the other events
  }
}

您也可以将日志级别设置为调试运行 logstash,但它会记录很多内容,并且在您的情况下不是最好的方法。


推荐阅读