【问题标题】:Drop log line containing hash character删除包含哈希字符的日志行
【发布时间】:2013-11-26 11:15:56
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: regex logging logstash logstash-grok


    【解决方案1】:

    如果您有兴趣,甚至更简单:

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

    Logstash 的最后几个版本更加强调分支逻辑directly in the config files。需要一点时间来适应,但一旦你习惯了就会很方便。

    【讨论】:

    • if 条件周围不需要额外的 ()。 if [message =~ "^#"] { 现在就足够了。
    【解决方案2】:

    正确答案是drop_if_match=>true (Logstash v1.2.2) 中存在错误。使用这种解决方法:

    grok {
      ...
      add_tag => ["some_comment"]
    }
    if "some_comment" in [tags] {
      drop {}
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-30
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2018-11-21
      • 2014-04-16
      相关资源
      最近更新 更多