APP下载

基于ELK的日志分析平台搭建与优化

2019-09-10李钦杨程

现代信息科技 2019年15期

李钦 杨程

摘  要:在云计算和大数据时代,针对业务服务运行状态的实时监控与日志数据分析具有非常重要的意义,而为了达成该目标,首先需要构建一个符合企业自身业务场景的集中式日志管理平台的解决方案。本文采用目前流行的开源集中式日志解决方案——ELK Stack(Elasticsearch、Logstash、Kibana Stack),探讨该方案中三大组件的核心功能和使用方法,在此基础上搭建对海量日志进行实时监控和检索分析的日志监控处理方案,以及研究如何优化在性能偏低的设备节点部署该方案的方法。

关键词:日志处理;ELK;filebeat

中图分类号:TP311.1       文献标识码:A 文章编号:2096-4706(2019)15-0193-02

Construction and Optimization of Log Analysis Platform Based on ELK

LI Qin,YANG Cheng

(Guangzhou Zhiyuan Electronics Co.,Ltd.,Guangzhou  510660,China)

Abstract:In the era of cloud computing and big data,the real-time monitoring and log data analysis of business service running state is of great significance. To achieve this goal,it is necessary to build a centralized log management platform solution in line with the enterprise’s own business scenario. Based on the currently popular open source centralized logging solutions——ELK Stack (Elasticsearch,Logstash,Kibana Stack),discusses the scheme of the three components of the core functions and using methods,based on the building of massive logs real-time monitoring and analysis of log to monitor treatment scheme,it also studies how to optimize the deployment of the scheme in low performance equipment nodes.

Keywords:log processing;ELK;filebeat

0  引  言

随着云计算的到来,越来越多的企业陆续在实际生产过程中使用云服务。云服务具有动态扩展,按需分配等特点,对计算机的软硬件资源进行了优化,提高了资源的利用率。企业使用云计算技术不仅可以减少硬件基礎设施的投入,还可以根据业务需求对运算能力和存储容量进行动态调整。

在线上运行的服务会产生大量的运行、访问和安全等日志,通常这些日志包含了线上服务执行的成功、失败还有用户访问状态等各种信息,并通过文件或标准输出进行打印。记录下来的日志可以为运维或开发人员对线上服务产生的问题进行排查定位提供依据,也可以通过记录采集的服务器状态数据进行监控,还可以对日志系统设置规则,通过邮件、短信等方式对告警错误等信息进行自动化告警。

大规模集群系统和应用服务的日志信息分布在各个设备节点与目录之中,若通过SSH登录到相应节点使用grep、awk与sed等文本处理工具进行日志文本查看,效率过低且难以管理,部署一个集中化的日志管理平台就显得势在必行了。开源的ELK Stack日志分析处理平台提供了一整套日记采集分析处理的解决方案,它可把服务器上所产生的日志信息和运行状态采集汇总后进行查询、监控、分析告警和机器学习等操作处理,使用这套ELK日志分析平台不仅能提升运维开发人员的工作效率,还能将业务服务的运行状态及时反馈给相关人员。

1  ELK日志分析平台结构

ELK Stack日志分析平台是由Elasticsearch、Logstash和Kibana三款开源软件组成的集中式日志解决方案,如图1所示是ELK最简单的架构,设备节点的log信息和运行状态经过Logstash采集,在Logstash中三个组件(input、filter和output)分别指定日志数据的输入源、数据过滤加工操作以及数据上报目的地,通过output设置将日志数据上报至Elasticsearch,然后由Kibana对数据进行搜索查询等展示功能。图1清晰地展示了数据如何在ELK日志分析平台中流动,了解ELK的三款软件如何协调工作。

Elasticsearch:是一个基于开源Apache Lucene库的全文搜索引擎构建,它提供了一个分布式的、支持RESTful API的搜索和数据分析引擎,具有高可伸缩性、高可靠性和实时性等特点,能对大量数据进行快速的存储、搜索与分析处理操作。

Logstash:是一个开源的数据处理采集软件,具有实时管道功能,能动态地将多个来自不同数据源的数据进行统一收集、并对数据进行过滤、分析、修饰等操作,然后将数据发送到用户指定的存储数据库。Logstash由input、filter和output三个组件组成。input组件可指定不同的数据源进行数据采集,filter组件可对采集数据进一步的过滤处理以方便后续的分析与存储操作,output组件则可指定数据最后上报的位置。

Kibana:是一个开源的日志数据分析、搜索和可视化操作平台,专门为Elasticsearch设计开发,可以对其中的日志数据进行查询和分析,并以统计图表的方式展示存放在Elasticsearch索引里的数据。Kibana提供了时序图、区域图和报表等常用统计图表,通过Vega声明性语法可以定制所需要的可视化统计图形。Kibana通常可以生成HTTP状态码的饼图、HTTP Request请求的响应时间柱状图、统计URL平均响应时间等图表,做成数据大屏。

2  ELK日志采集

2.1  Logstash的性能问题

在实际部署中,Logstash通常作为ELK Stack中的日志采集器(Agent),需要在设备节点上安装Logstash Agent,由其采集配置的日志数据上报至ELK日志分析平台。如在部署Logstash Agent后,发现部分性能较低的节点内存使用率居高不下,可以通过简单排查发现是由于Logstash采集日志程序消耗了过多的内存资源。因为Logstash是由Ruby语言开发的,并需要通过JRuby解析器运行在JVM环境下(JRuby是由Java语言编写的Ruby解析器),导致该程序的内存与CPU资源消耗比想象的要高,特别在一些低性能节点上会比较明显,嚴重的可能会导致正常的服务产生异常,系统无法正常工作。如果还使用Logstash的filter插件对日志数据进行注释和索引等操作时,Logstash可能会因为操作的复杂性导致其变成处理器、内存和硬盘密集型工具。通常情况下,可以根据设备节点的性能调整各个Logstash的启动参数,通过-Xms和-Xmx标志为其设置JVM的初始内存堆大小,能够一定程度地优化Logstash的性能,但是在设备节点数据数目众多的情况下,这样设置和后续修改的操作工作量是非常大的。因此在节点有性能问题约束的情况下,仅仅使用Logstash作为日志采集器并不合适,在这些节点可以根据需要直接通过其他程序将日志信息直接上报至ELK日志平台,例如rsyslog。

2.2  Beats替代Logstash作为日志采集器

Beats是多个单一功能的轻量级数据采集器工具集(Agent)的统称,Beats工具集软件基于Go语言开发,占用资源比使用Ruby开发的Logstash更少,执行效率更高,并且依赖占用资源少部署方便。Beats工具集包括了Filebeat(文件采集器)、Metricbeat(系统指标采集)、Packetbeat(网络数据采集)和Heartbeat(服务心跳采集)等多种数据类型的采集器,每个工具集只做与之相关的数据类型采集,它们可以将数据上报到Elasticsearch做集中处理,也可以发送数据到ELK日志平台的Logstash中进行进一步的加工,对数据格式进行转换或者解析。这样就可以在设备节点端采集日志时,只采集原始的日志数据,把日志数据的处理加工操作交给性能更强大的ELK日志分析平台完成,降低设备节点的内存以及CPU和IO的性能消耗,保障业务服务的正常运行。

下面通过模拟日志数据文件对Logstash和Filebeat(日志文件采集器)进行测试对比,两者在测试环境一样的情况下,经过5次每次20分钟的测试,取结果的平均值如表1所示。可以看到Filebeat的整体资源占用比Logstash要少很多,这样在低性能的设备节点中具有很大的优势,Beats采集器专注于数据的采集上报,支持TLS双向认证加密链接,保证Beats只向可信的Logstash端点上报加密数据,避免数据在传输过程中泄露,还支持背压敏感协议,当上报的目的端Logstash繁忙,来不及处理的时候会自动降低日志采集速率,不仅避免网络数据拥堵,还可以降低设备节点端的资源消耗。

3  结  论

在云计算和大数据时代,随着设备节点的规模不断扩大,应用服务的日志数据维护管理越来越重要,一个优秀的日志分析平台通过对日志数据的处理可很好地分析解决业务服务中的问题,也可通过配置实现监视业务服务发生异常时的自动化告警,为运维开发人员能够迅速地介入处理故障提供了保障。

ELK日志分析平台不仅适用于解决大量业务服务器的日志快速查询分析等问题,还可进行复杂的定制日志分析功能,尤其针对各种不同的业务服务日志,通过Logstash自定义过滤与规则提取,将日志数据上报到Elasticsearch进行存储,之后可在Kibana个性化定制图表展示数据大屏,方便运维开发人员对日志数据进行监控与分析。针对部分设备节点性能有限的情况,还可使用其他日志采集器(如Filebeat)替代Logstash进行数据采集,ELK Stack日志处理平台可通过配置各种输入源来解决采集端的需求,使其应用场景得到极大地扩充。

参考文献:

[1] 饶琛琳.ELK Stack权威指南 [M].第2版.北京:机械工业出版社,2017:98-175.

[2] 胡庆宝,姜晓巍,石京燕,等.基于Elasticsearch的实时集群日志采集和分析系统实现 [J].科研信息化技术与应用,2016,7(3):13-18.

[3] 陈建娟,刘行行.基于Kubernetes的分布式ELK日志分析系统 [J].电子技术与软件工程,2016(15):211-212+214.

[4] [美]拉斐尔·酷奇,马雷克·罗戈任斯基.深入理解Elasticsearch [M].第2版.张世武,余洪淼,商旦,译.北京:机械工业出版社,2017:159-181.

[5] [美]拉杜·乔戈,马修·李·欣曼,罗伊·罗素.Elasticsearch实战 [M].黄申,译.北京:人民邮电出版社,2018:268-310.

[6] Elasticsearch.Logstash Reference [EB/OL].https://www.elastic.co/guide/en/logstash/7.0/index.html,2019-06-25.

[7] Elasticsearch.Filebeat Reference [EB/OL].https://www.elastic.co/guide/en/beats/filebeat/7.0/index.html,2019-06-25.

作者简介:李钦(1986-),男,汉族,广西南宁人,软件工程

师,本科,研究方向:计算机软件、服务器运维、物联网系统设计;杨程(1992-),男,汉族,安徽桐城人,射频工程师,毕业于福建农林大学,工学本科,研究方向:微波射频系统、物联网系统设计。