CAT介绍

CAT系统原型和理念来源于ebay的CAL的系统。CAT系统第一代设计者吴其敏在ebay工作长达十几年,对ebay的CAL系统有深刻的理解,CAT增强了CAL系统核心模型之外,也添加更丰富的报表。CAT自2014年开源以来,CAT在携程、陆金所、猎聘网,找钢网等多家互联网公司生产环境应用。

CAT是一个实时和近全量监控系统,它侧重于Java应用的监控,基本接入了美团点评所有核心应用。CAT目前在在中间件框架(MVC框架、RPC框架、数据库框架、缓存框架等)中得到广泛应用,为美团点评各业务线提供系统的性能指标、健康状况、监控告警等。

本章会对CAT整体设计思路,客户端,服务端等一些设计思路做详细深入的介绍。

背景介绍

CAT整个产品研发在2011年底开始,处于前大众点评由.net迁移java的起步阶段。前大众点评已经有核心的基础中间件,rpc组件pigeon,统一配置组件lion。随着Java迁移以及服务化的实施,整体java在线上部署规模也逐渐变多,不过暴露的问题也越来越多。那时候典型的问题有:

  • 大量报错,特别是核心服务,需要花很久时间才能定位
  • 异常日志都需要线上权限登陆线上机器排查,排错时间长
  • 简单的错误定位都非常困难
  • 很多不了了之的问题怀疑是网络问题

在2011年这个阶段,前大众点评也有一些简单的监控工具(比如zabbix),但整体服务化水平参差不齐,扩展能力相对较弱,监控工具间不能互通互联,使得查找问题根源基本需要在多个系统之间切换。由前大众点评首席架构师吴其敏的带领下,我们开始研发了点评第一代监控系统CAT。

设计要素

监控整体要求就是快速发现故障,快速定位故障以及辅助进行程序性能优化。要做到这点,我们对监控系统的做出如下的要求

  • 实时处理:信息的价值会随时间锐减,尤其是事故处理过程中
  • 全量数据:最开始的设计目标就是全量采集
  • 高可用:所有应用都可以倒下了,需要监控还站着,告诉工程师发生了什么做到故障还原和问题定位
  • 故障容忍:CAT本身故障不应该影响业务正常运转,CAT挂了,应用不该受影响,只是监控能力暂时减弱
  • 高吞吐:要想还原真相,需要全方位的监控和度量,必须要有超强的处理吞吐能力
  • 可扩展:支持分布式、跨IDC部署,横向扩展的监控系统
  • 不保证可靠:允许消息丢失;这是一个很重要的trade-off,目前CAT服务端可以做到4个9的可靠性,可靠系统和不可靠性系统的设计差别非常大