我正在尝试将事件消息与几个正则表达式进行匹配。我打算使用grep过滤器,但是它已被弃用了,所以我正试着用否定来放弃。
我正在寻找的功能是删除所有事件,除非消息与几个正则表达式匹配。
过滤器波纹管不起作用,但单独测试两个表达式都能正常工作。 我错过了什么?
filter {
if ([message] !~ ' \[critical\]: ' or [message] !~ '\[crit\]: ') {
drop { }
}
}
答案 0 :(得分:13)
我正在阅读更多内容并继续使用grok绘制事件,添加标记并最终删除它们,如果标记不存在:
filter {
grok {
add_tag => [ "valid" ]
match => [
"message", ".+ \[critical\]: ?(.+)",
"message", ".+ \[crit\]: ?(.+) ",
"message", '.+ (Deadlock found.+) ',
"message", "(.+: Could not record email: .+) "
]
}
if "valid" not in [tags] {
drop { }
}
mutate {
remove_tag => [ "valid" ]
}
}
答案 1 :(得分:6)
if "_grokparsefailure" in [tags] {
drop {}
}
答案 2 :(得分:3)
您在条件中使用正则表达式,但没有以正确的格式传递参数。该文件显示了这一点:
if [status] =~ /^5\d\d/ {
nagios { ... }
}
请注意,正则表达式没有引用,并用斜杠包围。