基本提到日志分析架构都会提到ELK Stack,基本上已经成为最长使用的日志分析架构。在日常的日志分析领域,简单的数据分析,数据BI等进行支持。
最近工作的事情安排比较满,没有较多的时间来整理相关的文档内容,不是不更了。是确实有点忙..
日志系统是什么?
在早期的服务器故障分析的时候,可能我们直接进入Linux服务器查询相关的日志,定位异常。但是随着服务化与业务的不断增长,部署的机器越来越多。甚至是管理权限中规定不得登陆生产服务器进行任意操作。又或者是由于数据滚动的问题,或者磁盘容量问题导致日志删除或压缩。
所以,我们需要做一个搜集到服务器上的所有日志,并且能够进行统一检索的系统。甚至能够直接基于可视化的方式对数据进行展现。对系统的整体运行情况进行报表类的分析。
所以我们需要一套日志系统对相关数据进行采集,存储,索引,可视化等。
ELK Stack架构与组件
ELK Stack可能有些同学非常熟悉,很多公司的日志分析系统都是采用的该架构。为什么会先把ELK Stack拿出来呢? 其实本身我做某些东西的时候,最想先了解的是该系统、项目、产品是为了解决什么问题而存在的。然后再进行深入的学习。
ElasticSearch前面大概的讲了一下,这次主要是把ELK Stack拿出来或者说ElasticSearch当前比较常用的场景拿出来交流。
ELK Stack可以由上面的图看出,ELK Stack由三个组件组成,ElasticSearch、Logstash与Kibana。它是由ElasticSearch起源的。ElasticSearch作为一个搜索引擎,那么本身用户在使用的时候肯定还会需要把数据的摄入与读取展现。所以也就有了Logstash和Kibana。Logstash提供数据采集与数据解析并且实现写入到ElasticSearch中。而Kibana则提供了灵活的数据可视化展现图片。
Logstash是开源的数据采集与处理工具,依赖其强大的管道与插件机制实现了多种数据格式的采集、解析、转换方式。能够灵活的实现日志的解析工作。常用的解析插件例如 grok、kv、json等格式的数据处理。 Kibana是用来专门实现为ElasticSearch提供数据可视化的开源组件。其依赖于ElasticSearch直接对数据日志进行分析。例如分组,聚合,百分位数等。实现 条形图,饼图,折线图等数据可视化图表。支持直接对日志数据进行过滤,检索等。基本能够实现日常的数据分析工作。
总结来说:
- ElasticSearch是一个开源的搜索引擎,它的特点是 分布式、自动发现、索引分片、副本、restful接口、多源、自动负载等功能。
- Logstash同样是开源的数据采集与解析处理工具。能够提供文本内容的采集与过滤、处理、并且将数据发送到存储空间。
- Kibana也是开源免费的可视化工具,它专为ELasticSearch提供了日志分析处理的Web相关界面,实现数据的展现,直接检索ElasticSearch、汇总、分析数据日志的功能。