我想知道使用我的 Logstash Grok 过滤器的最佳方法是什么。我有一些针对特定日志条目的过滤器,不适用于所有条目。那些不适用的总是生成 _grokparsefailure 标签。例如,我有一个适用于每个日志条目的 grok 过滤器,它工作正常。然后我有另一个过滤器,用于带有回溯的错误消息。回溯过滤器为每个没有回溯的日志条目引发 grokparsefailure。
如果没有匹配项,我宁愿让它通过规则,而不是添加 parsefailure 标记。我使用 parsefailure 标记来查找无法正确解析的内容,而不是与特定过滤器不匹配的内容。也许只是命名法“解析失败”让我着迷。对我来说,这意味着过滤器有问题(例如格式错误),而不是它不匹配。
那么问题来了,我该如何处理呢?
使过滤器模式可选使用?
(ab) 使用 tag_on_failure 选项,将其设置为空 []
使用“如果在消息中回溯”之类的内容使过滤器有条件
还有什么我不考虑的?
提前致谢。
编辑
我采取了在过滤器周围添加条件的路径:
if [message] =~ /took\s\d+/ {
grok {
patterns_dir => "/etc/logstash/patterns"
match => ["message", "took\s+(?<servicetime>[\d\.]+)"]
add_tag => [ "stats", "servicetime" ]
}
}
不过仍然对反馈感兴趣。什么在这里被认为是“最佳实践”?