当前位置:首页 期刊杂志

基于ELK数据采集与分析平台的设计与实现

时间:2024-05-04

李连天

(阳江职业技术学院 广东省阳江市 529566)

1 引言

随着Internet技术的飞速发展,企业业务发展越来越大,需要越来越多的服务器。这些服务器生成的大量访问日志和其他错误日志,通过查询这些日志内容可以了解相关的硬件信息,以及发现配置过程中发生的错误的原因。当管理服务器数量达到数百台时,仍然使用依次登录每台机器的方式查询日志数据,不仅麻烦,而且效率很低,运维人员要花费数倍的时间。后来,人们开始使用集中式管理来收集和汇总所有服务器上的日志,使用Linux命令实现检索和统计,但处理数百台服务器生成的日志结果也不理想。因此网络运维人员需要一套可以高效率统一收集日志的可视化系统。为了解决上述问题,需要设计了一个基于ELK(Elasticsearch Logstash Kibana)的日志分析平台。它的功能是实时搜索,稳定,快速且使用非常方便。

2 需求分析

目前很多公司由于业务的发展,为保障公司业务正常进行,就需要增加相应的服务器来运行,服务器产生的海量日志,运维人员用以往的方法已经应付不过来了,现急需要做到问题的及时发现和处理。在日常运维工作中,运维人员对于系统和业务日志的处理尤为重要。以下六点是对ELK的需求分析:

2.1 数据日志的日益增多

如今一般一个公司都需要分量足够大的分析能力,处理数据时生产的日志随着业务增多,微服务得到重视,处理日志的能力进一步加强。在日常的工作中发现,系统产生的日志逐渐增加,想要找出其中的错误日志已经很难了。以前有能力处理的海量日志的公司,实力是不可否定的,都会内部开发属于自己的系统。现在处理数据成为了日常,ELK就顺势而出,帮解决数据复杂的问题。

2.2 开源属性

开源在IT社区里的呼唤一直都是很高的。我们常说开源、商业和自研三者之间是相辅相成,在运维工作中开源软件是运维工程师的首选,节省了成本高。开源的好处,在于他的通透,学习成本底,培养一个新手就很容易上手。

2.3 行业属性

就比如CDN日志能体现出系统运行的很多问题与错误,能快速正确分析CDN日志就能对CDN调度产生多方面影响,非常实在的经济效应,不可能不需要强大的日志分析工具。

2.4 运维自身的发展

运维自身也在发展,不可能一直在动荡漂浮的年代。日志分析对于运维来说是不可缺的,标准化的日志分析迟早会来临,也是历史发展的必然。

2.5 ELK自身属性

ELK能解决的核心问题,可视图形化、覆盖范围广、速度快、实时性、标准化和易扩展集成。

2.6 大数据导致机器开始变得廉价

如今大数据的快速发展使得机器在某种意义上变得廉价,数十上百台的服务器的增加,为了维护这些服务器很多技术被快速促进发展。

3 系统设计

本系统设计主要框架图如图1所示。

图1:系统整体构架

3.1 日志采集模块

通过配置文件设定好的日志规则,通过这些规则匹配到对应的日志内容,最后将日志传送到预处理模块进行处理。此模块实现的日志收集功能意味着收集代理从服务器收集访问日志,并将其转发到数据收集和分析平台以进行集中处理,但是日志收集的对象是很多主机,以及类型和格式的日志。不一样此时,需要在每台主机上部署日志收集模块,以收集所需的日志,然后将其统一到分析平台,这可以大大降低重复收集率,减轻目标主机的负担。

3.2 日志预处理模块

该模块主要负责把日志按照预先设置好的规则进行标准化,所谓标准化就是将数据的字段解析分解,修改其属性,进行转换,便可以轻松存储到ES存储器当中。

3.3 日志存储模块

该模块需要对采集到的日志数据或经过预处理分析后的数据进行存储和索引,以实现存储和检索功能。为了满足海量日志的存储和空间增长要求,必须对日志进行持久处理,以具有出色的处理搜索要求。另外,企业的业务增长非常快,该模块的分布式模式有效地解决存储的需求。为了防止模块受到停机时间的影响,使用了分布式和实时存储,每个字段都存储在索引中。结构化数据也是如此,因此它具有高可用性。

3.4 日志检索与展示模块

该模块的主要功能是可视化收集的日志数据。在以前的日志分析系统中,日志数据的可视化是一个相对较弱的部分,最终显示收集到的日志数据是为了便于查看和分析,以便您快速找到故障并解决。

4 系统设计与实现

4.1 日志采集模块

日志数据采集流程如图2所示。Beats组件是一系列用于采集数据的轻量级代理程序,用于从服务端收集日志、网络、监控数据,并最终汇总到elasticsearch。Beats组件收集的数据即可以直接上报给elasticsearch,也可以通过logstash中转处理后上报给elasticsearch。Beats中包含着Filebeat。

图2:日志数据处理

4.2 日志预处理模块

在系统中,输入主要是消息队列模块收集的日志数据,即Filebeat收集的数据,该数据将在转发到Logstash之后由过滤器处理。过滤器等效于处理管道,该管道根据定义的规则过滤和处理一条数据并将其转换为所需的信息。输出定义了Elasticsearch,用于接收和保存数据,最后将数据传递到显示模块,如图3所示。

图3:Logstash实现

4.3 日志存储模块

日志存储模块使用ES来实现日志持久化存储和建立索引库,ES是基于Lucene的,Lucene本身搜索功能就非常的齐全,所以ES也能拥有强大的索引引擎库。数据收集由多个节点(Node)组成一个集群(Cluster),日志数据经过二次解析过滤后发送到ES进行持久化存储,如图4所示。

图4:ES实现结构

4.4 日志检索与展示模块

该模块由三个部分组成,分别是数据的收集、窗口监视和分析平台的查询。用途是检索收集到的日志数据,通过平台的查询功能查询固定的日志,并通过平台的快速生成表格的方法产生的数据,以方便日后的日志分析。收集的数据不仅可以生成条形图,也可以生成系统特定的监视图来察看系统运行;还可以通过WebUI界面获取日志数据,例如,当日志中某段数据出现频繁错误时,系统即发出警报。

5 总结

本系统采用ELK作为系统框架,并搭建Nginx服务,结合Filebeat等技术,设计了数据采集与分析平台。平台分为四个模块:日志收集模块,日志存储模块,日志预处理模块以及日志检索和展示模块,系统能高效管理服务器日志数据。通过这个数据收集和分析平台,可以在一定程度上减少大量的运维成本,运维人员也可以提高工作效率。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!