首页 > 解决方案 > 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”

谢谢你的帮助!

标签: logstashkibanaelastic-stacklogstash-grok

解决方案


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

尝试这样的事情:

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

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


推荐阅读