「Elastic Stack」

更新日期:2019年08月07日

内容简介

本部分内容围绕Elastic Stack展开,包括一些常用的使用场景、架构方案、组件配置、使用方法、高可用、备份、监控等等方面的内容。这些内容与日志管理、数据汇聚、分析、展示等等方面联系更加的紧密,关注点在于各个组件之间的作用,而不单单是作为搜索引擎使用的Elasticsearch本身。有关于作为搜索引擎使用的Elasticsearch的内容(搭建、高可用、架构、备份、调优)等等内容,不在该部分进行讨论。

什么是「Elastic Stack」?

官网的「What is the ELK Stack?」介绍了「Elastic Stack」这个词的由来,所以这里就长话短说。

「ELK」,这是以前的名字,它是三个项目(Elasticsearch,Logstash,Kibana)首字母的缩写。「Elasticsearch」是一个搜索和分析引擎。「Logstash」是服务器端数据处理管道,用于采集分析处理数据,然后写入到「Elasticsearch」中。「Kibana」是一个数据可视化平台,使用图表和图形将「Elasticsearch」中的数据可视化。所以数据流大概是「Logstash」->「Elasticsearch」->「Kibana」这样的一个过程,即「收集-存储-展示」。

最开始的时候,只有「Elasticsearch」本身。后来加入「Logstash」和「Kibana」来摄取和展示数据。这时候就有了ELK这个名字。后来社区大了,大家的需求又复杂了。“我们只想抓取一个文件”,这时候(2015)引入了轻量级的「Beats」家族。这时候就开始叫「Elastic Stack」了名字了。(什么不用ELKB、BELK之类的首字母缩写?这是为了避免「Alphabet soup」的问题)

核心组件

通常「Elastic Stack」由四个部分组成:

  • 数据收集:由「Beat」完成,负责在各个主机节点上进行单纯的收集数据,然后发送到「Logstash」或「ElasticSearch」中。
  • 数据处理:由「Logstash」完成,它是数据处理的管道,可以从多个源中提取和转换数据,然后将其发送到“存储”(例如,Elasticsearch)中。
  • 数据存储:由「ElasticSearch」完成,负责索引日志数据,提供日志查询,是「Elastic Stack」的心脏。
  • 前端展示:由「Kibana」完成,负责显示「ElasticSearch」中的数据及负载等等信息。

下面将依序简单介绍每个组件的用途。

Beat

其实「Beats」家族有7个成员,而我们经常用到的日志采集工具「Filebeat」就是其中之一。

我们所说的「Filebeat」是一个轻量级日志采集器。在早期的「ELK」架构中,使用「Logstash」收集、解析日志,但是「Logstash」对内存、CPU、IO等资源消耗比较高。与「Logstash」相比,「Filebeat」所占系统的CPU和内存几乎可以忽略不计。另外,还有「Metricbeat」、「Heartbeat」、「Winlogbeat」等等,后面会详细介绍。

Logstash

负责日志的搜集、分析、过滤,支持多种的数据获取方式。将过滤之后的数据发送给存储库,这里我们使用的是ElasticSearch组件,当然还支持其他的存储库。

Elasticsearch

开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,RESTful API,多数据源,自动搜索负载等等。它是「Elastic Stack」的心脏。

由「Logstash」或者「Filebeat」收集的数据,都将发送给「ElasticSearch」进行索引、存储。详细可参考「Elasticsearch Reference」手册。

Kibana

一个开源的分析和可视化平台。提供与存储在「Elasticsearch」中的数据进行搜索、查看、交互的功能。「Kibana」提供的日志分析非常友好的Web界面,可以帮助汇总、分析、搜索重要数据日志。

在「Elasticsearch」中并不包含查看、管理数据的Web界面,而这些功能是由「Kibana」提供的。在「Kibana」的配置文件中指定要连接的「Elasticsearch」服务。

如何搭建「Elastic Stack」服务?


搭建「Elastic Stack」就是把上面的各个组件运行起来,这里侧重于介绍Filebeat、Elasticsearch、Kibana这三个组件,而「Logstash」作为一个补充进行介绍。

(1)首先,先搭建「Elasticsearch」服务,不然的话「Filebeat」的数据不知发往何处,而且「Kibana」也不知道去哪里获取数据。(2)然后,再搭建「Kibana」服务,可以先看到「Elasticsearch」的状态,可以进行一个概览。(3)最后,搭建「Filebeat」服务来收集数据,并写入「Elasticsearch」中。

有关详细的安装过程,可以参考官方「Installing the Elastic Stack」手册,里面涵盖了不同平台的安装方法,以及相关的问题。

参考文献


ToC

内容简介

什么是「Elastic Stack」?

核心组件

Beat

Logstash

Elasticsearch

Kibana

如何搭建「Elastic Stack」服务?

参考文献