日志分析之Elastic Stack简介

ELK,麋鹿?no,no,no;了解一下快速简单又灵活的ELK日志分析系统。

题图:from Zoommy

引子

随着系统产生的日志数量不断增加,大量的日志不再适合人工阅读或查看,因此,往往采用一些技术对已有日志进行分析整理,以图表或者其他易于阅读的方式将日志信息展示出来。

Elastic Stack

Elastic Stack是Elastic公司的一套开源项目,这套技术栈也被广泛的称之为ELK。包括elasicsearch,logstash,kibana。其主要功能就是对数据进行收集,格式化,索引,分析和可视化。具有搭建简单,配置容易等优点。

起初,只有elasticsearch是elastic公司的,不过在接下来的一段时间内,elastic公司先后收购了logstash和kibana,统一三者的发布版本号,完善了三者间的配合,将三者打造成了数据收集分析和展示的利器。

ElasticStack从2014年开始逐渐趋于完善稳定,不过现在(2016年05月16日)仍处在快速迭代中。

对于分析日志而言,一般分为三个步骤;日志收集,日志整理存储,数据展示。对应ElasticStack中的:L(ogstash), E(lasticsearch),K(ibana)。

注:E、L、K三者都可以单独使用,并非一定要绑在一起打包使用。

Logstash

Logstash是一个插件化的日志收集系统,现已包含200+plugin可用,并且可以轻松自定义插件,下图源自官网文档,可见Logstash可以轻松与常用系统集成。

用过Linux的人应该对管道操作符‘|’很熟悉,Logstash就像是一个管道操作符,他对事件、消息、或者任何感兴趣的东西进行收集、处理、分发。就像管道中的水流入流出。

多样的架构

input、output、filter是最常用的三个插件,用来配置输入输出目标与过滤处理。下面两图分别介绍了最简单和稍复杂的Logstash收集系统架构。

下图中,先是使用一层多个Logstash实例进行收集并汇总到消息队列,再使用一层Logstash实例从消息队列中获取、处理然后存储到分布式的Elasticsearch中。

Elasticsearch(ES)

Elasticsearch是一个基于Apache Lucene的开源搜索引擎。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

同时,ES具有与生俱来的分布式支持。

• 分布式的实时文件存储,每个字段都被索引并可被搜索
• 分布式的实时分析搜索引擎
• 可以扩展到上百台服务器,处理PB级结构化或非结构化数据
——《Elasticsearch权威指南》

在ELK中,ES的角色就是存储并提供搜索功能以便更好的进行日志分析。

Kibana

Logstash收集后的数据都已经存放到了ES中,作为日志分析一条龙服务,现在就差数据展示(可视化)了。Kibana的前身就是专门设计用来查看ES中数据的,因此Kibana与ES的配合十分简单流畅。Kibana不要求与ES部署在同一台机器上,可以通过ES的Restful API查询数据。可以通过配置文件将一个ES集群配置给Kibana进行查询,并且Kibana支持常用图表的生成,可以通过自定义查询、横纵坐标含义等方式展示信息,拥有良好的数据展示能力与自定义能力。

支持常用图表类型:

饼图示例:

相关推荐

ELKstack中文指南:http://kibana.logstash.es/content/