我想知道是否可以通过logstash仅向elasticsearch发送特定的日志消息? E.G让我说我的日志文件中有这些消息:
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转发器处理此日志时,我想跳过第二行,是否可以指示它跳过包含关键字“ domainlist ”的任何日志消息?或者仅允许使用关键字“通过”?
的日志消息答案 0 :(得分:2)
是的,您可以使用drop
filter。
根据您记录日志行的方式以及您拥有的字段名称,如果事件符合某些条件,您可以决定删除该事件。例如,在下面您可以看到grok
过滤器之后的条件,该过滤器会检查myfield
是否包含与值PASS
不同的内容,在这种情况下它会丢弃事件。
filter {
grok {
...your parsing regexp here...
}
if [myfield] != "PASS" {
drop { }
}
}
答案 1 :(得分:1)
虽然Val的回答是正确的,但另一种方法是使用conditional进行过滤:
output {
if "PASS" in [message] {
elasticsearch {
...
}
}
}