APP下载

基于ELK的日志分析系统研究与实践

2020-12-23谢磊张冰杨猛

科技经济市场 2020年10期
关键词:物联网大数据

谢磊 张冰 杨猛

摘 要:为解决现阶段物联网应用日志处理效率低下的问题,研究一种基于ELK技术栈的开源日志解决方案。探讨各组件的工作原理和使用方法,提出解析日志的规则和技巧,总结优化Elasticsearch集群性能的方法,在此基础之上搭建能够对海量日志进行实时采集和检索的分析监控系统。实验结果表明,该方案具有配置方式灵活、集群可线性扩展、日志实时导入、检索性能高效、可视化方便等优点,能有效提高运维效率和异常排查速度。

关键词:大数据;物联网;系统监控

系统运行维护、诊断故障、属性分析都是通过日志数据来解析的,日志是日志分析系统的主要组成部分。随着互联网大数据的发展和规模的扩大,系统的日志数量在不断增加,其采集规模也在不断扩大;传统的采集手段已经远远不能满足日志采集,且日志分析的方式会造成能源消耗的浪费,工作效率差,不能进行多维度的查询,也不能对复杂事件进行处理分析。现在大数据的处理趋势主要是实时性,同时,硬件成本降低,在这种情况下出现了许多日志分析平台,其中以ELK(分布式搜索引擎Elasticsearch、日志搜集过滤工具Logstash、数据可视化分析平台Kibana)为代表的实时日志分析平台,能满足多个场合的应用和需求,可以从庞大的日志信息数据中准确及时筛选出相关的信息,对信息数据进行监控和维护,对日志可以实行统计分析。ELK不仅提高了运维人员的工作效率和质量,还能实时地监控日志数据运行状态,并反馈处理。

1 基于ELK的日志分析系统平台

1.1 系统整体结构

一个完整的日志分析系统主要包括采集、解析、储存和可视化转换4个部分。在ELK平台运行过程中,Logstash主要是对日志数据进行采集、分析解读和过滤数据,获取大量的日志数据并按照解析规则输送至Elasticsearch。Elasticsearch是一个开源分布式的搜索引擎,主要有搜集、分析、儲存等功能,具有对整个数据库进行检索的功能,在处理过程中Elasticsearch作为存储日志的主要系统。Kibana把日志数据解析变得可视化,可以把从Elasticsearch中获取的大量日志数据进行可视化解析,便于数据分析。Logstash可以对日志数据进行采集和解读,但大规模的日志采集会增加内存的消耗和CPU储量,如果服务器的设备和性能不够完善,可能会导致服务器性能降低和系统罢工。为了解决这种问题,Elastic公司开发出了另外一种日志采集器Beats,在数据采集方面代替Logstash,系统结构见图1。

Beats是单一功能所有器的总称,能通过日志的不同采集源和类型进行分类采集,现阶段分为以下几种:

(1)Filebeat:本地文件的日志数据,可以对目录和特殊的文件进行监控;

(2)Metricbeat:又称为Topbeat,通过搜集系统、系统进程和文件等级别的CPU和内存储存情况;

(3)Packetbeat:对网络上的数据进行搜集,对系统实时监控,出现故障时可以及时反馈错误和报告,将其发送给Logstash或Elasticsearch;

(4)Winlogbeat:对Windows系统日常事件数据搜集;

(5)Heartbeat:对服务器的运行状况监控,和Logstash相比,Beats收集数据的储量占比很小,其次,Beats和Logstash两种支持双向加密传输,客户端和服务器双向认证,可以确保信息传输的安全性和稳定性。

1.2 实时收集系统

日志收集是分析处理和监控的基础和重要部分,不同系统的数据采集源各不相同,日志收集需要在不同服务器上把分散的数据进行分析汇总,在通过解析规则进行转换。现阶段都是通过Filebeat和Logstash汇总日志来组成日志收集,格式一般都采用文件的形式。

Filebeat是GO语言开发的不会消耗大量资源的轻便型日志采集器。当它开始工作运转时,会启动一个和多个prospector监控日志的采集源和数据,每个日志的数据都有相对应的harvester,harvester对日志进行解读后会转发至后台。Filebeat能对注册文件进行维护,记录每个harvester最终读取位置的偏差值。

Logstash是分布式数据收集引擎,对日志数据进行搬运,它能动态地从其他数据源搜集数据,并对数据进行筛选、解析、统一格式,然后输送到相应的区域。把事件流通过Logstash中的Input、Filter和Output插件进行处理和转换,Input是日志数据输入的开始,Filter对数据进行解析转换,Output对传输方向进行输送。

Grok是Logstash的一种正则解析插件,它能对日志数据进行解析转化,其中数据库中包含了120多种表达式数据,在对日志进行解析时需要采用相应的正则表达式来转化。利用Grok插件所带来的便捷,对总结的文件进行解析,步骤如下:

(1)对采集的日志解析,并进行切分,每一条数据分为不同的字段,对其进行分析解读,字段是日志分析的主要部分,是解读日志和分析最重要的内容;

(2)将收集到的数据采取切分原则,切分后的字段都采用正则表达式的解析方式进行转换,如果Grok中的正则数据库中存在其相应的表达式,则可以直接对其进行转换使用,没有则采用自定义的转换方式进行转换分析,两种模式可以结合使用;

(3)在GrokDebugger的调整工具中对解析后的日志进行调试、查验转换的表达式是否正确。

2 ELK日志采集

2.1 Logstash的性能问题

在实际的操作过程中,Logstash一般在ELKStack中作为日志采集器的工具,需要在不同设备的节点上安装设置相应Logstash采集器,再将采集后的数据进行解析分配,传送到ELK。Logstash是由Ruby语言开发制造的,且需要用JRuby解析器进行解读分析,这种解读方式会增加内存的占比和CPU容量的消耗,尤其是在一些性能低下的节点上,情况会加重,可能会导致服务器故障,系统运作出现问题。如果使用filter插件对日志的数据进行解析,操作过程不仅繁琐,还会使Logstash变成系统处理器和硬盘密集型工具。通常情况可以根据不同设备的节点性能,对各个设备数据进行调整,以-Xms和-Xmx标志来设置JVM的初始内存大小,这种方式能够优化Logstash的性能,但是如果节点很多,则会增加运维人员的工作量。因此在节点性能产生故障时,使用Logstash作为日志采集器则不合理。

2.2 Beats替代Logstash

Beats是多种具有单一功能的轻便型数据采集器工具集的统称,Beats工具集软件的开发语言是GO语言,和Ruby相比它的资源占比较少,执行高效。Beats工具集包括了Filebeat、Metricbeat、Packetbeat和Heartbeat等技术栈的采集器,每个工具功能单一化,通过搜集相关数据再采集后上报至Elasticsearch做集中化处理。它还能对节点采集的数据进行保留,并将数据转化解析传送给ELK日志分析平台,降低内存的使用率占比和其他性能的消耗,还能保证系统服务器的正常运转。

Filebeat工具对于低性能的节點具有很好的帮助作用,能够降低内存使用量占比。Beats采集器的比较单一化,对日志数据进行采集且支持TLS双向的认证加密,可以在向信任的Logstash服务器端点输送数据时,防止数据在传送过程中泄露和丢失。同样还支持背压敏感协议,可以防止网络数据缓慢,降低设备节点的储量和资源的消耗情况。

3 结论

在互联网数据不断增多的情况下,设备节点也不断增加,维护服务日志数据也变得越来越重要。一个好的日志分析平台可以对日志数据进行高效和优化的处理,及时准确地处理产生的问题和故障,还能通过实时监控和控制,对业务产生的故障及时诊断处理,并发出警告提醒,提高了运维人员的工作效率。ELK日志分析平台不仅能够对大量日志数据进行分析处理解析,还能够对复杂的日志数据进行差异化采集和分类,利用Logstash工具自定义的筛选和解读规则采集,将解析的日志数据上报至Elasticsearch并存储下来,再之后在Kibana进行对数据可视化解读和分析,提升分析的准确性和稳定性。在设备节点性能低下的情况,可以采用其他的日志采集器(Filebeat)替代Logstash进行数据采集。ELKStack日志处理平台可以应用于不同场景,通过调整配置来满足不同采集端的需要,进行定制化的采集数据。这种系统的使用增强了日志数据处理的便捷和质量,提高了使用率。

参考文献:

[1]阮晓龙,张浩林.基于ELK的Apache日志实时分析系统探索与分析模型研究[J].电脑与信息技术,2020,28(01):54-57.

[2]李志民,孙林檀,吴建军,等.基于大数据的ELK日志分析系统研究及应用[J].科学与信息化,2019(28):54,59.

猜你喜欢

物联网大数据
基于LABVIEW的温室管理系统的研究与设计
论智能油田的发展趋势及必要性
大数据环境下基于移动客户端的传统媒体转型思路
中国或成“物联网”领军者