作为程序员肯定会遇到以下的问题:
场景一:用户反馈 App 无法下单,用户反馈无法支付,用户反馈商品无法搜索等问题。
这个问题在于当系统出现问题后,第一反馈的总是用户。我们需要做的是什么,是在出问题后研发第一时间知晓,而不是让用户来告诉我们出问题了。
场景二:出故障后如何快速定位问题。
一般传统的方式当出现问题后,我们就会去服务器看看日志是否有异常信息。
场景三:用户反馈订单列表要 10 几秒才展示,用户反馈下单一直在转圈圈。
这个属于优化相关,对于研发来说,优化是一个长期的过程,没有最好只有更好。优化除了需要有对应的方案,最重要的是要对症下药。
今天大叔给大家推荐美团开发的实时应用监控平台 -- CAT。目前在 GitHub 上 star 16.3k。
CAT(Central Application Tracking)是基于 Java 开发的实时应用监控平台,包括实时应用监控,业务监控。
CAT 作为服务端项目基础组件,提供了 Java , C/C++ , Node.js , Python , Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
CAT 第一个优势,是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是 48 分钟 40 秒,基本上可以看到 48 分钟 38 秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。
整个CAT主要分为三个模块,cat-client ,cat-consumer ,cat-home 。
cat-consumer 和 cat-home 是部署在一个jvm内部,每个 CAT 服务端都可以作为 consumer 也可以作为 home ,这样既能减少整个 CAT 层级结构,也可以增加整个系统稳定性。
监控一段代码运行情况:运行次数、QPS 、错误次数、失败率、响应时间统计(平均影响时间、Tp 分位值)等等。
Heartbeat 报表是 CAT 客户端,以一分钟为周期,定期向服务端汇报当前运行时候的一些状态。
Business 报表对应着业务指标,比如订单数量、监控订单耗时等。
Problem 记录整个项目在运行过程中出现的问题,包括一些异常、错误、访问较长的行为。
Cat 能够帮助研发人员减少故障发现时间,降低故障定位成本,合理、灵活的监控规则可以帮助更快、更精确的发现业务线上故障。