千家信息网

如何进行基于Elastic Stack的海量日志分析平台实践

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这期内容当中小编将会给大家带来有关如何进行基于Elastic Stack的海量日志分析平台实践,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Elastic Stac
千家信息网最后更新 2024年11月11日如何进行基于Elastic Stack的海量日志分析平台实践

这期内容当中小编将会给大家带来有关如何进行基于Elastic Stack的海量日志分析平台实践,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Elastic Stack简介
Elastic Stack包括Beats、Elasticsearch、Logstash、Kibana、APM等,ELK是其核心套件。
Elasticsearch 是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能; 是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。 它构建于Apache Lucene搜索引擎库之上。
Logstash 是一个用来搜集、分析、过滤日志的工具。 它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。 它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
Kibana 是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。 它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。

Beats是轻量级数据采集工具,包括:

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

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

3.Filebeat(搜集文件数据);

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

5.Metricbeat(收集系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据);

6.Auditbeat(采集linux审计日志);

系统架构
第一种ELK架构,是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。建议小规模集群使用。此架构首先由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。

Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。 用户亦可以更直观的通过配置Kibana Web Portal方便的对日志查询,并根据数据生成报表。


第二种架构,引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。这种架构适合于较大集群的解决方案,但由于Logstash中心节点和Elasticsearch的负荷会比较重,可将他们配置为集群模式,以分担负荷,这种架构的优点在于引入了消息队列机制,均衡了网络传输,从而降低了网络闭塞尤其是丢失数据的可能性,但依然存在Logstash占用系统资源过多的问题。

第三种架构,引入了Logstash-forwarder。首先,Logstash-forwarder将日志数据搜集并统一发送给主节点上的Logstash,Logstash分析、过滤日志数据后发送至Elasticsearch存储,并由Kibana最终将数据呈现给用户。这种架构解决了Logstash在各计算机点上占用系统资源较高的问题。经测试得出,相比Logstash,Logstash-forwarder所占用系统CPU和MEM几乎可以忽略不计。另外,Logstash-forwarder和Logstash间的通信是通过SSL加密传输,起到了安全保障。如果是较大集群,用户亦可以如结构三那样配置logstash集群和Elasticsearch集群,引入High Available机制,提高数据传输和存储安全。更主要的配置多个Elasticsearch服务,有助于搜索和数据存储效率。但在此种架构下发现Logstash-forwarder和Logstash间通信必须由SSL加密传输,这样便有了一定的限制性。

第四种架构,将Logstash-forwarder替换为Beats。经测试,Beats满负荷状态所耗系统资源和Logstash-forwarder相当,但其扩展性和灵活性有很大提高。Beats platform目前包含有Packagebeat、Topbeat和Filebeat三个产品,均为Apache 2.0 License。同时用户可根据需要进行二次开发。这种架构原理基于第三种架构,但是更灵活,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。

系统架构一个例子:MySQL日志审计系统
MySQL日志审计系统,采用percona audit插件审计MySQL的访问情况,结果记录到指定文件中。 通过Rsyslog将每个MySQL审计日志集中到Rsyslog Server的指定目录中,使用filebeat监控文件变化,上报到kafka。 使用Logstash消费数据,把数据过滤切割后,写入ES中,用户通过kibana查询相关数据。
系统架构图如下:


由于使用Percona版本的MySQL Server,因此审计采用Percona的审计插件。 为了避免消耗过多性能,审计日志只记录连接情况,输出到文件中。
收集到的审计日志,通过Rsyslog的imfile模块,采集审计日志,发送到Rsyslog Server上统一存储。
Rsyslog上接收到的文件,通过filebeat上报kafka。 之后,Logstash负责消费kafka的数据,过滤切割后,写入到ES中。
用户可以在kibana中查询自己所需的数据,如下图:


上述就是小编为大家分享的如何进行基于Elastic Stack的海量日志分析平台实践了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

0