我的计划是使用Logstash过滤特定IP的日志文件。
我从一个简单的IP过滤器开始,它应该删除所有非有效IP的行,然后删除。
grok {
match => [ "ip_filter" , " %{IPV4:clientip}" ]
tag_on_failure => [ "_todelete" ]
}
因此,每个具有无效IP的行都应标记为_todelete,但在Kibana上,我看到每一行都标记了它。有什么想法吗?
我的下一步是删除所有标有" _todelete"的行。与
grok {
remove_tag => [ "_todelete" ]
}
引导我进入" _grokparsefailure"
感谢您的帮助!
答案 0 :(得分:0)
如果有人也需要答案:问题是grok在IP之前寻找空间。在我的情况下,该行直接使用IP启动,因此我的解决方案是使用
^%{IPV4:clientip}
答案 1 :(得分:0)
您可以使用基于标记的条件来控制该行是否发送到您的logstash文件中的ES输出。
尝试这样的事情:
output {
if "_todelete" not in [tags] {
elasticsearch {
index => "index-%{+YYYY.MM.dd}"
}
}
}
添加此条件应过滤不需要的行,而不是将它们输出到ES索引。