Logstash使用Grok删除行

时间:2018-06-03 16:47:45

标签: logstash kibana elastic-stack logstash-grok

我的计划是使用Logstash过滤特定IP的日志文件。

我从一个简单的IP过滤器开始,它应该删除所有非有效IP的行,然后删除。

grok {
match => [ "ip_filter" , " %{IPV4:clientip}" ]
tag_on_failure => [ "_todelete" ]
}

因此,每个具有无效IP的行都应标记为_todelete,但在Kibana上,我看到每一行都标记了它。有什么想法吗?

我的下一步是删除所有标有" _todelete"的行。与

grok {
     remove_tag => [ "_todelete" ]
  }

引导我进入" _grokparsefailure"

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如果有人也需要答案:问题是grok在IP之前寻找空间。在我的情况下,该行直接使用IP启动,因此我的解决方案是使用

^%{IPV4:clientip}

答案 1 :(得分:0)

您可以使用基于标记的条件来控制该行是否发送到您的logstash文件中的ES输出。

尝试这样的事情:

output {
    if "_todelete" not in [tags] {
        elasticsearch {
        index => "index-%{+YYYY.MM.dd}"
        }
    }
}

添加此条件应过滤不需要的行,而不是将它们输出到ES索引。