0

我想知道是否可以通过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 ”的日志消息?

4

2 回答 2

2

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

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

filter {
  grok {
      ...your parsing regexp here...
  }

  if [myfield] != "PASS" {
    drop { }
  }
}
于 2015-09-03T08:15:32.413 回答
1

尽管 Val 的回答是正确的,但另一种方法是使用条件过滤:

output {
  if "PASS" in [message] {
    elasticsearch {
      ...
    }
  }
}
于 2015-09-10T05:48:37.677 回答