Logstash 过滤器如何找出哪些事件已被删除?
Logstash filter how to find out what events have been dropped?
我有 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{}
}
}
当您 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,但它会记录很多内容,这不是处理您的情况的最佳方式。
我有 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{}
}
}
当您 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,但它会记录很多内容,这不是处理您的情况的最佳方式。