如何解决仅当邮件同时通过两个过滤器而不是失败时,如何应用解析失败标记?
我的logtash配置有两个过滤器:1)解析日志消息和2)解析JSON消息:
filter {
grok {
match => { "message" =>
"\[%{TIMESTAMP_ISO8601:log_time}\]\[%{LOGLEVEL:log_level}(?<space>\s*)\]\[%{DATA:thread_name}\]\[%{DATA:class_name}\]%{GREEDYDATA:log_msg}" }
}
json {
source => "message"
add_tag => ["RiskExplain"]
}
}
目前,如果记录了JSON消息,它将在通过json过滤器解析之前使grok过滤器失败。由于第一个过滤器失败,因此它将收到一个_grokparsefailure
标签。我想删除此标记,并且仅在两个过滤器均失败时才应用解析失败标记。有可能吗?
解决方法
grok {
match => { "message" =>
"\[%{TIMESTAMP_ISO8601:log_time}\]\[%{LOGLEVEL:log_level}(?<space>\s*)\]\[%{DATA:thread_name}\]\[%{DATA:class_name}\]%{GREEDYDATA:log_msg}" }
}
if "_grokparsefailure" in [tags] {
json {
source => "message"
add_tag => ["RiskExplain"]
tag_on_failure => ["The_Tag_You_Want"]
remove_tag => [ "_grokparsefailure" ]
}
}
这样,仅当grok过滤器无法解析消息时,才会使用json过滤器。 json过滤器将删除_grokparsefailure
标签,如果失败,将添加The_Tag_You_Want
标签。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。