功能分析
数据输入
使用flume客户端获取个系统的数据;
用户通过页面输入系统名称、负责人触发规则等信息
数据存储
使用flume采集数据并存放在kafka集群中
数据计算
使用storm编写程序对日志进行过滤,将满足过滤规则的信息,通过邮件短信告警并保存到数据库中
数据展示
管理页面可以查看触发规则的信息,系统负责人,联系方式,触发信息明细等。
整体架构设计
主要架构为应用+flume+kafka+storm+mysql+Java web
。
数据流程如下:
- 应用程序使用log4j产生日志
- 部署flume客户端监控应用程序产生的日志信息,并发送到kafka集群中
- storm spout拉去kafka的数据进行消费,逐条过滤每条日志的进行规则判断,对符合规则的日志进行邮件告警。
- 最后将告警的信息保存到mysql数据库中,用来进行管理。
1.Flume设计
- Flume说明
Flume是一个分布式、可靠地、可用的服务,用来收集、聚合、传输日志数据。它是一个基于流式数据的架构,简单而灵活。具有健壮性、容错机制、故障转移、恢复机制。它提供一个简单的可扩展的数据模型,容许在线分析程序。Flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用。 - Flume 设计摘要
使用 Flume EXEC执行一个linux命令来生成数据源。例如,可以用tail命令监控一个文件,那么,只要文件增加内容,EXEC就可以将增加的内容作为数据源发送出去。
使用 org.apache.flume.plugins.KafkaSink,将Flume EXEC产生的数据源发送到Kafka中。
2.Kafka设计
- Kafka说明
kafka是一个分布式消息队列:生产者、消费者的功能。 - Kakfa设计摘要
部署kafka集群,在集群中添加一个Topic:monitor_realtime_javaxy
3.Storm设计
- KafkaSpout读取数据,需要配置Topic:monitor_realtime_javaxy
- FilterBolt判断规则
- NotifyBolt用来发送邮件或短信息
- Save2DB用来将告警信息写入mysql数据库