Dockerbeats 仪表板 containerName 字段的问题

Problems with Dockerbeats dashboard containerName field

我在 运行 ELK 堆栈和其他一些杂项的本地集群上设置了 dockerbeats。 dockers(通过 kubernetes 控制的所有容器)。我从 Ingensi (Ingensi dockerbeat Dashboard) 为 kibana 和 运行 设置了仪表板,在设置图表时遇到了 containerNames 字段的问题。现在,对于上下文,我的 docker 容器的名称如下:

k8s_dockerbeats.79c42f90_dockerbeats-796n9_default_472faa11-1b3a-11e6-8bf4-28924a2bffbf_2832ea88

(以及具有类似容器名称的 kubernetes 支持容器)[2]:http://i.stack.imgur.com/hvIUG.png k8s_POD.6d00e006_dockerbeats-796n9_default_472faa11-1b3a-11e6-8bf4-28924a2bffbf_3ddcfe44

当我在 kibana 中设置仪表板时,我遇到了一个问题,即我从同一个容器中获取了多个 containerNames。例如,我将 containerName 分成更小的部分,而不是单个 containerName 输出:

k8s_dockerbeats
79c42f90_dockerbeats
796n9
28924a2bffbf_3ddcfe44

等等...

我假设容器名称的格式混淆了仪表板(可能是它解析名称信息的方式),我可能会四处将每个容器重命名为更合理的名称。

但在我这样做之前,有没有一种方法可以配置仪表板,让我读入整个容器名称字符串,这样它就不会像第一张图片中那样分解? (假设我必须深入研究上述存储库中的 .json 文件)

如果有人回答这个问题,请提前致谢。

听起来容器名称正在被 Elasticsearch 分析。您需要确保容器名称字段在 Elasticsearch 索引模板中被标记为 not_analyzed。您可以通过安装 Dockerbeat 提供的 index template 来做到这一点。

将字段标记为 not_analyzed 可确保数据未标记化并按原样索引。只能通过指定确切的字符串进行搜索。

安装新索引模板后,您需要删除当前索引才能更改映射。

安装提供的索引模板:

  • curl -XPUT 'http://elasticsearch:9200/_template/dockerbeat' -d@dockerbeat.template.json

删除现有索引:

  • curl -XDELETE 'http://elasticsearch:9200/dockerbeat-*'

您可以通过查询 Elasticearch 查看您当前的映射:

  • curl http://elasticsearch:9200/dockerbeat-*/_mapping