实时日志监控系统

更新时间:2023-12-13 15:28:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实时日志监控系统

目标:

实现对系统日志的实时监控,快速获取系统运行时异常日志,并以邮件的方式通知运维人员

关键技术:

flume、rocketmq、jstorm、hbase

整体架构图:

WebServerWebServerWebServerSourceSinkChannel flume-agentEmailServerEmailBoltIsErrorBoltHbaseBoltJstormSpoutLogTopicTag1Tag2Tag3 RocketMQTag1ErrorTableTag2ErrorTableTag3ErrorTableHbase

系统描述

系统采用三层:数据采集(flume+rocketmq)、数据计算层(jstorm)、数据存储层 flume对应用系统实时产生的日志逐条进行收集,发送到rocketmq消息队列

jstorm从rocketmq拉取日志,逐条对拉取到的日志进行分析,如果日志符合预警条件则给相关人员发送邮件,并且将日志信息写入hbase,方便查看。

hbase存储所有的满足预警条件的日志信息,为运维人员提供查询基础。 源码下载地址:http://pan.http://www.wodefanwen.com//s/1bnxt0dx

架构设计考虑

可用性

1:agent挂掉 1):机器挂掉导致agent挂点,这个没影响,机器挂了不会产生日志 2):agent进程挂点,按下面两种方式来提高系统的可用性。首先,所有的Agent 在supervise的方式下启动,如果进程死掉会被系统立即重启,以提供服务。其次, 对所有的Agent进行存活监控,发现Agent死掉立即报警

2:rocketmq、jstorm、hbase都是分布式的,具有高可靠性,可以不用考虑

可靠性

Flume 的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在

送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。Flume 使用事务性的方式保证传送Event整个过程的可靠性。Sink 必须在 Event 被存入 Channel 后,或者,已经被传达到下一站agent里,又或者,已经被存入外部数据目的地之后,才能把 Event 从 Channel 中 remove 掉。这样数据流里的 event 无论是在一个 agent 里还是多个 agent 之间流转,都能保证可靠,因为以上的事务保证了 event 会被成功存储起来。而 Channel 的多种实现在可恢复性上有不同的保证。也保证了 event 不同程度的可靠性。比如 Flume 支持在本地保存一份文件 channel 作为备份,而memory channel 将 event 存在内存 queue 里,速度快,但丢失的话无法恢复。

扩展性

1:agent,对于Agent这一层来说,每个机器部署一个Agent,可以水平扩展,不受限

制。一个方面,Agent收集日志的能力受限于机器的性能,正常情况下一个Agent可以为单机提供足够服务

2:rocketmq、jstorm、hbase具有高扩展性,可以不用考虑

本文来源:https://www.bwwdw.com/article/mje5.html

Top