CAT(Central Application Tracking),是基于纯Java开发的分布式实时监控系统。开源代码托管在GitHub(搜索CAT即可),作者是吴其敏(qmwu2000,目前在平安任职)和尤勇(youyong205 目前在点评运维部)。CAT采用非常开放的Apache License开源,在国内已经有100多家互联网公司在使用和评估,包括大众点评网、携程网、猎聘网、陆金所和找钢网等。截至2019年4月,CAT已经获得近9000个stars。
CAT在分布式实时方面,主要归结于以下几点因素:
- 去中心化,数据分区处理。
- 基于日志只读特性,以一个小时为时间窗口,实时报表基于内存建模和分析,历史报表通过聚合完成。
- 基于内存队列,全面异步化,单线程化,无锁设计。
- 全局消息ID,数据本地化生产,集中式存储。
- 组件化、服务化理念。
1、功能模块
- cat-client: 客户端,上报监控数据
- cat-consumer: 服务端,收集监控数据进行统计分析,构建丰富的统计报表
- cat-alarm: 实时告警,提供报表指标的监控告警
- cat-hadoop: 数据存储,logview 存储至 Hdfs
- cat-home: 管理端,报表展示、配置管理等
2、设计思想
CAT架构图(cat-client、cat-consumer、cat-home),