大众点评开源监控CAT概览
Posted spen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大众点评开源监控CAT概览相关的知识,希望对你有一定的参考价值。
1. CAT介绍
CAT是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,除了与点评RPC组件融合的很好之外,他将会能与Spring、MyBatis、Dubbo 等框架以及Log4j 等结合 , 它提供系统的性能指标、健康状况、监控告警等,在微服务监控领域也是非常有用的一套组件。
1.1 CAT特性
- 实时处理:信息的价值会随时间锐减,尤其是事故处理过程中。
- 全量数据:最开始的设计目标就是全量采集,全量的好处有很多。
- 故障容忍:CAT本身故障不应该影响业务正常运转,CAT挂了,应用不该受影响,只是监控能力暂时减弱。
- 高吞吐:要想还原真相,需要全方位地监控和度量,必须要有超强的处理吞吐能力。
可扩展:支持分布式、跨IDC部署,横向扩展的监控系统。
不保证可靠:允许消息丢失
2. CAT的设计
2.1 消息结构
2.1.1 CAT支持的监控消息类型包括:
Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
Heartbeat 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。Trace 用于记录基本的trace信息,类似于log4j的info信息,这些信息仅用于查看一些相关信息
2.1.2 消息树
2.2 客户端设计
2.2.1 消息发送流程
try {
Cat.logEvent("Call", "FSP.CALL", Event.SUCCESS, "");
yourBusinessOperation();
Cat.logEvent("SQL", "template.query", Event.SUCCESS, "slect * from dual");
Cat.logEvent("Cache", "redis.getKey", Event.SUCCESS, "{key:name}");
} catch (Exception e) {
Cat.getProducer().logError(e);//用log4j记录系统异常,以便在Logview中看到此信息
}
2.2.2 消息栈结构
2.2.3 什么时候需要埋点
两个原则:
问题为中心
重要的业务指标
2.2.4 埋点的规范
问题类型 | Type Key | 举例 |
---|---|---|
系统类型 | System | |
定时任务 | Task | |
HTTP接口类 | URL | |
SQL类型 | SQL | |
配置类 | Config | |
连接类 | Connection | |
业务类 | BusinessService |
2.3 服务端设计
2.3.1 消息消费设计
消息分发:
2.3.2 原始消息存储设计
2.3.2.1 MessageId的格式
CAT消息的Message-ID格式btc_fos-0a010680-375030-2,CAT消息一共分为四段:
第一段是应用名btc_fos。
第二段是当前这台机器的IP的16进制格式,0a010680表示10.1.6.108。
第三段的375030,是系统当前时间除以小时得到的整点数。
第四段的2,是表示当前这个客户端在当前小时的顺序递增号。
2.3.2.2 什么时候触发持久化操作
- 正常情况下:一个周期的结束
- 异常情况:JVM停止
2.3.2.3 文件和索引
MessageTree 落入磁盘样例:
/opt/tiefan/catdata/appdatas/cat/bucket/dump/20180825/00/CTM-10.32.16.111-10.32.16.30
/opt/tiefan/catdata/appdatas/cat/bucket/dump/20180825/00/CTM-10.32.16.111-10.32.16.30.idx
2.4 部署设计
3. Cat接入指南
http://wiki.blackfi.sh/pages/viewpage.action?pageId=16444831
以上是关于大众点评开源监控CAT概览的主要内容,如果未能解决你的问题,请参考以下文章