我的日志文件中有一行,实际上只是其中有一个半冒号。我假设它已附加到上一行。 Logstash会不断打印它们,并且只要有一行以;开头的行,我都想删除它们。

这是logstash打印的内容:

"message" => ";/r"
"@version" => "1"
"@timestamp" => 2014-06-24T15:39:00.655Z,"
"type" => "BCM_Core",
"host => XXXXXXXXXXX",
"Path => XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"tags" => [
[0] "_grokparsefailureZ"
],
"BCM_UTC_TIME" =>"2014-06-24%{time}Z"

我尝试使用多行附加到上一行,因此logstash将停止打印:
   multiline{
    type => "BCM_Core"
    pattern => "\;"
    negate => true
    what => "previous"
}

但logstash仍在打印它们。如何使logstash掉落?

最佳答案

只需使用放置过滤器删除以;开头的任何行:

filter {
   if ([message] =~ "^;") {
      drop {}
  }
}

尽管基于输出,但实际上不是;/r而是;\r,因此,如果您的输出不仅仅是一个示例,则可能需要调整。

您也可以删除任何无法破解的内容:
if "_grokparsefailure" in [tags] { drop {} }

关于regex - 如何从Logstash删除事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24391004/

10-16 08:39