1、前言
服务的集群部署催生了ELK的出现。当我们的服务集群的时候,日志文件就会散落在各个节点。这时候,如果我们需要查看日志,就不在像单点服务那么简单了,带来的问题则是查看日志信息需要到各个服务节点上去查看,这给我们造成了很大的困扰和不便,所以,我们应该把这些日志文件归集到一个地方去统一管理。
2、概要
ELK是elasticsearch、Logstash和Kibana三个系统的首字母组合。当然ELK不只是查看日志功能这么简单,还有更多的应用。
2.1)Elasticsearch:
是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
2.2)Logstash:
是一个动态数据收集管道,具有可扩展的插件生态系统和强大的Elasticsearch协同作用
2.3)Kibana:
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
3、ELK的工作流程
在需要收集日志的节点上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到MQ缓冲,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,最后通过kibana进行UI展示查询。这样一个通用的分布式的日志收集流程就完成了。当然,在我们的服务日志量不是很大的情况下,我们也可以去掉MQ缓冲,直接将logstash的output指向要存储的ElasticSearch上即可。
4、演变
4.1)
ELK部署最简单的方式就是L-E-K方式,不添加任何其他辅助系统,部署简单快速,容易上手。
4.2)
在L-E之间添加一层redis辅助,这样能够减少日志在服务端的积压,把压力转移到ELK系统服务器上。这种方式添加redis之后,由于redis是内存系统所以响应速度很快,而且可以在redis后添加多个消费系统(Logstash),来扩展消费能力,增强处理速度。
4.3)
当数据量随着业务增长,reids已经不能满足业务需求了,取而代之的是更可靠的消息中间件(kafka、racket等等)
图略