8

在我的 Logstash 托运人中,我想过滤掉用哈希字符注释的行:

#This log row should be dropped.
But one this should not.

我能够使用grep过滤器,但由于不鼓励(即将退役),我正在尝试使用grok过滤器来代替它。此过滤器不起作用:

grok {
  match => ["message", "^#.*"]
  drop_if_match => true
}

我还尝试将正则表达式放在自定义模式文件中,但没有帮助。有任何想法吗?

4

2 回答 2

21

更简单,如果您有兴趣:

filter {
    if ([message] =~ /^#/) {
        drop{}
    }
}

Logstash 的最后几个版本更加强调直接在配置文件中的分支逻辑。需要一点时间来适应,但一旦你习惯了就非常方便。

于 2013-11-26T19:22:52.347 回答
2

正确的答案是drop_if_match=>true(Logstash v1.2.2)中有一个错误。使用这种类型的解决方法:

grok {
  ...
  add_tag => ["some_comment"]
}
if "some_comment" in [tags] {
  drop {}
}
于 2013-11-26T12:59:30.590 回答