Beats:为 Beats => Logstash => Elasticsearch 架构创建 template 及 Dashboard

前一段时间有一个开发者私信我说自己的 Beats 连接到 Logstash,然后连接到 Elasticsearch。等数据在 Elasticsearch 中收集完后,发现 Kibana 中的 Dashboard 不能被使用。数据类型不匹配。这个到底是什么原因呢?

Beats 为我们的数据导入带来了极大的方便。目前在 Elastic Stack 的架构中:

我们可以通过如下的三种路径把数据导入到 Elasticsearch 中:

  • Beats ==> Elasticsearch
  • Beats ==> Logstash ==> Elasticsearch
  • Beats ==> Kafka ==> Logstash ==> Elasticsearch

如果你对这个架构还不是很了解的话,请参阅我之前的文章:

每个 Beats 含有各种模块,它为我们常见的服务提供了很方便的数据采集方式。我们基本上可以开箱即用这些模块。你可以详细阅读文章 Beats:Beats 入门教程 (二)来了解如何启动这些模块。

在 Beats 的模块启动中,我们通常采用 setup 来进行导入index template, ingest pipeline,ILM policy 及  Dashboard。你可以详细阅读文章 “Beats:解密 Filebeat 中的 setup 命令”。在那篇文章中,我们非常需要注意的一点是:如果你没有一个 index template,那么等 Elasticsearch 收集第一个数据,它就会按照自己默认的方式为你的数据创建一个 mapping。这个也就是在 Elasticsearch 中常说的 schemaless,但是在很多的情况下这个并不是最优的 mapping。当我们使用 Beats 导入的 Dashboard,它适合于使用 setup 命令而导入的 index template 所定义的数据类型。你可以阅读 “Elasticsearch: Index template” 以了解更多。

当我们使用 Beats 时,我们最重要的一点就是先执行 setup,而后再导入数据。然而对于如下的两种输入方式:

  • Beats ==> Logstash ==> Elasticsearch
  • Beats ==> Kafka ==> Logstash ==> Elasticsearch

由于我们的 Beats 并不是直接连接到 Elasticsearch。在执行 setup 时,它并不能起到作用。那么我们该怎么办呢?

正对上面的两种情况,我们需要首先按照如下的方式配置 Beats:

也就是:

  • Beats ==> Elasticsearch

当我们执行完 setup 命令之后,我们就创建好了相应的 index template,index pattern, ILM policy 以及 Dashboard 等。这个过程我们可以称之为 Bootstrap。然后,当我们导入数据的时候,我们按照之前的连接方式导入数据,也就是:

  • Beats ==> Logstash ==> Elasticsearch
  • Beats ==> Kafka ==> Logstash ==> Elasticsearch

值得注意的是:setup 针对任何的 Beats,只需要运行一次就可以了。这样导入的数据,它完全可以使用之前的 Dashboard 进行展示。

已标记关键词 清除标记
相关推荐