1、核心组成ELK是一个应用套件(应用套件就是多款软件组合),由Elasticsearch, Logstash和Kibana三部分组件组成,简称ELK;它是一套开源免费、功能强大的日志分析管理系统。ELK可以将我们的系统日志、网站日志、应用系统日志等各种日志进行收集、过滤、清洗,然后进行集中存放并可用于实时检索、分析。这三款软件都是开源软件,通常是配合使用,而且又先后归于Elastic.co公司名下,故又被简称为ELK Stack。也就是能够收集多台服务器产生的日志数据的聚合套件!下图是ELK Stack的基础组成。
初级版ELK
升级版ELK
Logstash收集到的日志发送给Elasticsearch在由Kibana来操作ElasticSearch实现可视化数据展示
ElasticSearch:
是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Logstash:
主要是用来日志的搜集、分析、过滤日志的工具。用于管理日志和事件的工具,你可以用它去收集日志、"转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。基于java语言开发
Kibana:
是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持,它能够搜索、展示存储在Elasticsearch中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。
Kafka:
数据缓冲队列。作为消息队列解耦了处理过程,同时提高了可扩展性。具有峰值处理能力,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
Filebeat:
隶属于Beats,轻量级数据收集引擎。基于原先Logstash-fowarder的源码改造出来。换句话说: Filebeat就是新版的Logstash-fowarder,也会是ELK Stack在Agent的第一选择,目前Beats包含四种工具:
ELK收集日志的两种形式
这两种方式各有优缺点,第一种方式不用修改原始日志输出格式,直接通过logstash的grok方式进行过滤分析,好处是对线上业务系统无任何影响,缺点是logstash的grok方式在高压力情况下会成为性能瓶颈如果要分析的日志量超大时, 日志过滤分析可能阻塞正常的日志输出。因此,在使用logstash时,能不用grok的,尽量不使用grok过滤功能。第二种方式缺点是需要事先定义好日志的输出格式,这可能有一定工作量,但优点更明显,因为已经定义好了需要的日志输出格式, logstash只负责日志的收集和传输,这样就大大减轻了logstash的负担,可以更高效的收集和传输日志。另外, 目前常见的web服务器,例如apache,nginx等都支持自定义日志输出格式。因此,在企业实际应用中,第二种方式是首选方案。