笔者接触到ELK是由于公司项目采用微服务架构,这样在部署时各个服务需要在不同机器上,而且每个服务部署好几份,这个时候日志到收集就是问题了,不能像之前那样单体应用都在一个机器,可以直接登录查看,所以就开始去了解ELK,最后用ELK+Kafka来完成日志收集处理并展现,而且ELK在大数据行业应用也很广泛。

一、ELK介绍

ELK Stack是软件集合Elasticsearch、Logstash、Kibana的简称,它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

 

Elasticsearch 是一个基于 Lucene 的、支持全文索引的分布式存储和索引引擎,主要负责将日志索引并存储起来,方便业务方检索查询。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana是一个可视化工具,也是一个开源和免费的,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Filebeat隶属于Beats。目前Beats包含四种工具:

1、Packetbeat(搜集网络流量数据)

2、Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据

3、Filebeat(搜集文件数据)

4、Winlogbeat(搜集 Windows 事件日志数据)

官方文档:

Filebeat:

https://www.elastic.co/cn/products/beats/filebeat

https://www.elastic.co/guide/en/beats/filebeat/5.6/index.html

Logstash:

https://www.elastic.co/cn/products/logstash

https://www.elastic.co/guide/en/logstash/5.6/index.html

Kibana:

https://www.elastic.co/cn/products/kibana

https://www.elastic.co/guide/en/kibana/5.5/index.html

Elasticsearch:

https://www.elastic.co/cn/products/elasticsearch

https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html

elasticsearch中文社区:

https://elasticsearch.cn/

笔者ELK相关文章:

ELK架构体系、ELK运行原理、ELK应用场景、ELK简单介绍(一)

Linux安装ELK、elasticsearch部署安装(二)

Linux安装ELK、logstash部署安装(三)

Linux安装ELK、kibana部署安装(四)

ELK启动报错:OpenJDK 64-Bit Server VM warning

ELK常见错误问题、ELK的一些坑、Unable to connect to Elasticsearch at http://localhost:9200

 

二、ELK架构体系

架构图一:

elk监控redis elk监控银行应用_Kibana

这是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。

此架构由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。

架构图二:

elk监控redis elk监控银行应用_ELK架构体系_02

此种架构引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

架构图三:

elk监控redis elk监控银行应用_ELK架构体系_03

此种架构将收集端logstash替换为beats,更灵活,消耗资源更少,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。

 

三、ELK运行原理

笔者现在使用了微服务架构,应用流程如下:使用log4j的appender向kafka的topic发送日志信息,同时也记录了文本文件,logstash收到kafka的数据存储起来过滤后交给elasticsearch拿去建立索引分析、检索,最后kibana的web页面来搜索日志、分析出图表等。

 

 

四、ELK应用场景

1、分布式部署项目,需要收集日志。

2、微服务架构项目,收集各个服务的日志。

3、大数据行业。

 

 

五、ELK安装部署集成

ELK架构体系、ELK运行原理、ELK应用场景、ELK简单介绍(一)

Linux安装ELK、elasticsearch部署安装(二)

Linux安装ELK、logstash部署安装(三)

Linux安装ELK、kibana部署安装(四)

微服务整合ELK、Kafka搭建日志系统