大家好,我是爱撸码的开源大叔!
作为程序员肯定会遇到以下的问题:
场景一:用户反馈 App 无法下单,用户反馈无法支付,用户反馈商品无法搜索等问题。
这个问题在于当系统出现问题后,第一反馈的总是用户。我们需要做的是什么,是在出问题后研发第一时间知晓,而不是让用户来告诉我们出问题了。
场景二:出故障后如何快速定位问题。
一般传统的方式当出现问题后,我们就会去服务器看看日志是否有异常信息。
场景三:用户反馈订单列表要 10 几秒才展示,用户反馈下单一直在转圈圈。
这个属于优化相关,对于研发来说,优化是一个长期的过程,没有最好只有更好。优化除了需要有对应的方案,最重要的是要对症下药。
今天大叔给大家推荐美团开发的实时应用监控平台 – CAT。目前在 GitHub 上累计 star16.3k。
Cat 是什么?
CAT(Central Application Tracking)是基于 Java 开发的实时应用监控平台,包括实时应用监控,业务监控。
CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
CAT 很大的优势是它是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是 48 分钟 40 秒,基本上看到 48 分钟 38 秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。
Cat 功能亮点
- 实时处理:信息的价值会随时间锐减,尤其是事故处理过程中。
- 全量数据:全量采集指标数据,便于深度分析故障案例。
- 高可用:故障的还原与问题定位,需要高可用监控来支撑。
- 故障容忍:故障不影响业务正常运转、对业务透明。
- 高吞吐:海量监控数据的收集,需要高吞吐能力做保证。
- 可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统。
架构设计
整个CAT主要分为三个模块,cat-client,cat-consumer,cat-home。
- cat-client 客户端,提供给业务以及中间层埋点的底层sdk,上报监控数据。
- cat-consumer 服务端,用于实时分析从客户端提供的数据。
- cat-home 管理端,作为用户提供给用户的展示的控制端。
cat-consumer和cat-home是部署在一个jvm内部,每个CAT服务端都可以作为consumer也可以作为home,这样既能减少整个CAT层级结构,也可以增加整个系统稳定性。
报表介绍
Transaction报表
监控一段代码运行情况:运行次数、QPS、错误次数、失败率、响应时间统计(平均影响时间、Tp分位值)等等。
Heartbeat报表
Heartbeat报表是CAT客户端,以一分钟为周期,定期向服务端汇报当前运行时候的一些状态。
Business报表
Business报表对应着业务指标,比如订单数量、监控订单耗时等。
Problem 报表
Problem记录整个项目在运行过程中出现的问题,包括一些异常、错误、访问较长的行为。
小结
Cat 能够帮助研发人员减少故障发现时间,降低故障定位成本,合理、灵活的监控规则可以帮助更快、更精确的发现业务线上故障。感兴趣的小伙伴,在公众号后台回复「监控」即可获取项目地址~~
写在最后
欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!
进群方式:公众号后台回复888
,按提示操作即可进群。
问君能有几多愁,开源项目解千愁,我们下期再见!
大家的点赞、收藏和评论对大叔非常重要,如文章对你有帮助还请转发支持下,谢谢!