在上家公司工作时,设计的日志收集与实时分析架构,还是比较简单的:

flume-ng + rocketmq + storm + redis + 前端展示

wKiom1VN6OORofHIAAOZvLoXRKA351.jpg


消息队列部分,我们刚开始采用的是kafka,但 kafka在支持回溯消费和重复消费方面比较弱,同时在数据安全方面也相对弱一些,后来我们改为阿里的rocketmq。


考虑到我们的数据量也不是很大,已经能够足够支撑,但在rocketmq这层,有时会因为网络异常问题,会产生消息堆积,导致消息队列被冲爆,稳定性还不是非常高,后来咨询了其他部门的同事,他们的做法是,在消息队列这一层次,额外增加了一层mongodb,消息队列这层仅保留消息的索引信息,消息的实体信息保存在mongodb中,可以很好地回避此问题,后来由于各种原因就没有再去尝试此方法......j_0057.gif


其他一些常用方案:

logstash + elasticsearch + kibana

fluentd + influxdb + grafana

flume-ng + kafka + storm

kafka + spark streaming + redis