【问题标题】:Filter specific Message with logstash before sending to ElasticSearch在发送到 ElasticSearch 之前使用 logstash 过滤特定消息
【发布时间】:2015-09-03 08:09:08
【问题描述】:

我想知道是否可以通过 logstash 仅将特定的日志消息发送到 elasticsearch?例如,假设我的日志文件中有这些消息:

2015-08-14 12:21:03 [31946] PASS  10.249.10.70  http://google.com
2015-08-14 12:25:00 [2492]  domainlist \"/etc/ufdbguard/blacklists\
2015-08-14 12:21:03 [31946] PASS 10.249.10.41 http://yahoo.com

我想在 logstash/log forwarder 处理此日志时跳过第二行,是否可以指示它跳过任何带有关键字“domainlist”的日志消息?还是只允许使用关键字“PASS”的日志消息?

【问题讨论】:

    标签: elasticsearch logstash logstash-grok logstash-configuration logstash-forwarder


    【解决方案1】:

    是的,您可以通过使用drop filter 来实现。

    根据您对日志行的理解方式以及您拥有的字段名称,您可以决定在某个事件符合某些条件时删除它。例如,您可以在下面看到 grok 过滤器之后的条件,它检查 myfield 是否包含与值 PASS 不同的内容,在这种情况下它将丢弃事件。

    filter {
      grok {
          ...your parsing regexp here...
      }
    
      if [myfield] != "PASS" {
        drop { }
      }
    }
    

    【讨论】:

    • 感谢您的帮助 :) .
    【解决方案2】:

    虽然 Val 的回答是正确的,但另一种方法是使用 conditional 过滤:

    output {
      if "PASS" in [message] {
        elasticsearch {
          ...
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-02
      • 1970-01-01
      • 2017-02-14
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多