首页 > 解决方案 > 移除或隐藏 Kibana 中特定容器的所有日志

问题描述

我正在为我的容器化环境设置 EFK 堆栈。我已经给 /var/lib/docker/containers/*.log 从所有容器中获取日志,它工作正常。

现在我看到我的一个容器生成了一些奇怪的日志,我决定不在 Kibana 仪表板上显示它们。

@timestamp         August 30th 2019, 13:44:59.136
_id                 XXX
_index              filebeat-6.0.1-2019.08.30
_score              - 
_type               doc
beat.namexyz        xyz.com
beat.version        6.0.1
container.name      mycontainer
property            mycontainerproperty
log:

如何隐藏此容器的条目?

我认为首先不要从这个容器中获取日志,但容器 ID 不会每次都相同。所以在输入部分排除它似乎是不可能的。

如果有人在这里有任何想法,请告诉我。是否有任何 grok 模式可用于隐藏此容器的条目?

标签: containerslogstashkibana

解决方案


因此,正如评论中的 OP 所述,应删除的事件以日志字段中的值DEBU:开头。

这是一个 logstash 过滤器(未经测试),用于检查日志字段的值是否符合此条件。如果是这样,该事件将被丢弃,这意味着它不会被 Elasticsearch 索引。

filter{
  grok{
    match => { "log" => "^DEBU:.*" }
    tag_on_failure => [ "event_should_not_be_dropped" ]
  }

  if "event_should_not_be_dropped" not in [tags]{
    drop { }
  }
}

使用 grok 插件,我们检查日志字段的值是否以DEBU:开头。如果没有,该事件将被标记。如果未标记事件,则将丢弃整个事件。

我希望我能帮助你。


推荐阅读