日志监控告警系统功能分析
1.数据采集(flume):
数据来自于多个系统,编写日志采集文件,来自log4j,所以source直接用tail -F进行追踪。因为要将多个系统的日志信息进行区分,所以定义了拦截器。拦截器获取配置文件中的系统id属性,从event中获取message,将系统id添加到message中然后再set到event中即可。sink到kafka。
2.kafka集群:创建topic,规划分片brock,数据量7、8T,考虑峰值1g/s,理论上kafka处理数据的能力是600M/s,实际300M/s 6台,副本数3。
3.kafka消费者storm:创建kafkaSpout(conf(zk,topic,zkroot,zk),6);
编写bolt处理数据;解析数据,获得appid,根据appid在mysql获取对应的规则,并存入内存;
一旦触发规则就告警;
保存触发信息到数据库;
难点在定时加载规则信息:10分钟加载一次,bolt中excute方法,当前时间分钟%10==0,loaddata,多个task调用,存在多线程的问题,给loaddata方法加锁,10分钟我只要加载一次就够了,所以用flag=true,loaddata完成就变成false,当前时间分钟%10!=0时,变为false。
4.数据库设计:用户表、规则表、规则记录表

浙公网安备 33010602011771号