Dockerbeats仪表板containerName字段的问题

时间:2016-05-16 15:39:27

标签: docker containers kibana dashboard filebeat

我在运行ELK堆栈和其他一些misc的本地集群上设置了dockerbeats。码头工人(所有集装箱通过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文件)

如果有人回答,请提前致谢。

1 个答案:

答案 0 :(得分:0)

听起来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