点评cat使用记录

点评cat使用记录

cat介绍

CAT(Central Application Tracking),是基于 Java 开发的分布式实时监控系统。CAT在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集群智能调度等领域提供业界领先的、统一的解决方案。CAT 目前在美团的产品定位是应用层的统一监控组件,基本接入了美团所有核心应用,在中间件(RPC、数据库、缓存、MQ 等)框架中得到广泛应用,为各业务线提供系统的性能指标、健康状况、实时告警等。

四大报表

  • Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数
  • Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小
  • Business报表对应着业务指标,比如订单指标。与Transaction、Event、Problem不同,Business更偏向于宏观上的指标,另外三者偏向于微观代码的执行情况。
1
2
3
4
5
场景示例:
1. 我想监测排队取号量。
2. 我想监测预定订单量。
3. 我想监测搜索调用次数。
  • problem Problem记录整个项目在运行过程中出现的问题,包括一些异常、错误、访问较长的行为。Problem报表是由logview存在的特征整合而成,方便用户定位问题。

项目接入

  1. 各种类型项目接入方法 spring mvc 和 spring boot等类型:
    https://github.com/dianping/cat/tree/master/integration
    Dubbo的项目就会有Type为PigeonService的Transaction,Spring boot的项目是自动有Type为Url的Transaction。可以在一些重要的接口中埋入想要监测的点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Transaction t = Cat.newTransaction("name", "msg");
try {
queryES();
Cat.logEvent("response data size is", 213);
//请求别人的接口
business();
//记录对应的响应结果
t.setStatus(Transaction.SUCCESS);
} catch (Exception e) {
Cat.logError(e);//用log4j记录系统异常,以便在Logview中看到此信息
t.setStatus(e);
} finally {
t.complete();
}
  1. 统计调用次数
1
Cat.logMetricForCount("execut_xx_count");
  1. 可以在Business报表对应着业务指标:可以查看到基于分钟级别的次数统计。
  2. 可以设置对应告警以查看基线值。
    基线: 基线是对业务指标的预测值。

基线生成算法:
最近一个月的4个每周几的数据加权求和平均计算得出,秉着更加信任新数据的原则,cat会基于历史数据做异常点的修正,会把一些明显高于以及低于平均值的点剔除。

举例:今天是2018-10-25(周四),今天整天基线数据的算法是最近四个周四(2018-10-18,2018-10-11,2018-10-04,2018-09-27)的每个分钟数据的加权求和或平均,权重值依次为1,2,3,4。如:当前时间为19:56分设为value,前四周对应的19:56分数据(由远及近)分别为A,B,C,D,则value = (A+2B+3C+4D) / 10。

对于刚上线的应用,第一天没有基线,第二天的基线基线是前一天的数据,以此类推。

如何开启基线:
只有配置了基线告警的指标,才会自动计算基线。如需基线功能,请配置基线告警

调用链

dubbo项目需要在请求header加入:
_catChildMessageId
_catRootMessageId
_catParentMessageId
参考链接: https://www.cnblogs.com/xing901022/p/6237874.html

CAT会对应用有影响吗?

CAT 本身故障不应该影响业务正常运转,CAT 挂了,应用不该受影响,只是监控能力暂时减弱

CAT埋点后可以对我提供哪些帮助

  1. 减少线上问题的发现时间,减少问题故障的定位时间,辅助应用程序的优化工具
  2. 可以很清晰到看到一个项目对应每个接口的响应时间,通过对第三方调用时埋点,当遇到故障时可以很清晰的知道是哪里发生了问题,还可以清晰的看到一些慢方法慢sql的日志。 可以做出相应的优化处理。
  3. 可以设置一些指标的统计而且可以设置基线告警,实时监测核心指标的变化趋势。

文档资料

  1. 点评cat wiki https://github.com/dianping/cat/wiki/intro
  2. 看大众点评如何通过实时监控系统CAT打造7*24服务 https://mp.weixin.qq.com/s/auYHrLrJ_r8JneMiVCgqWQ

后记

cat功能强大,还有很多知识和用法待探索发现。可以一起学习交流!