【问题标题】:Logstash remove lines with GrokLogstash 使用 Grok 删除行
【发布时间】:2023-03-25 01:32:01
【问题描述】:

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

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

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

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

我的下一步是删除所有带有“_todelete”标签的行

grok {
     remove_tag => [ "_todelete" ]
  }

这导致我遇到“_grokparsefailure”

感谢您的帮助!

【问题讨论】:

  • 如果您可以添加一些示例日志,将会很有帮助

标签: logstash kibana elastic-stack logstash-grok


【解决方案1】:

如果有人也需要答案:问题是 grok 正在寻找 IP 之前的空间。在我的情况下,该行直接从 IP 开始,所以我的解决方案是使用

^%{IPV4:clientip}

【讨论】:

  • 这不是真的,grok 不会寻找空格。您需要显示您的日志以完全了解问题的实际原因。如果没有示例日志,此答案对其他人毫无用处。
【解决方案2】:

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

试试这样的:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 2021-03-31
    相关资源
    最近更新 更多