如何让logstash删除与一组正则表达式不匹配的所有事件?

lna*_*aia 7 logstash

我正在尝试将事件消息与几个正则表达式进行匹配.我打算使用grep过滤器,但是它已被弃用了,所以我正试着用否定来放弃.

我正在寻找的功能是删除所有事件,除非消息匹配几个正则表达式.

过滤器波纹管不起作用,但单独测试两个表达式都可以正常工作.我错过了什么?

filter {    
    if ([message] !~ ' \[critical\]:  ' or [message] !~ '\[crit\]: ') {
        drop { }
    }
}
Run Code Online (Sandbox Code Playgroud)

lna*_*aia 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" ]
  }
} 
Run Code Online (Sandbox Code Playgroud)


小智 6

if "_grokparsefailure" in [tags] {
  drop {}
}
Run Code Online (Sandbox Code Playgroud)


Ala*_*ins 3

您在条件中使用正则表达式,但没有以正确的格式传递参数。该文档显示了这一点:

if [status] =~ /^5\d\d/ {
  nagios { ...  }
} 
Run Code Online (Sandbox Code Playgroud)

请注意,正则表达式未加引号并用斜杠包围。