CAT介绍
程序员文章站
2022-07-15 16:49:32
...
1.CAT的定位
CAT是点评开源的一个实时监控系统,主要体现在监控报表Transaction、event、problem、heartbeat等,cat系统定制的监控模型以及定制的实时分析报表也是cat系统核心优势。这里强调了CAT相比于其他系统的二开优势。
这也是我选择CAT作为公司正式环境实时监控系统的一个主要原因。相较于其他APM监控系统,大部分使用的是字节码agent技术。公司现在研发对agent以及字节码技术掌握度不高。使用这些技术的链路追踪系统在公司现在的环境下很难进行定制以及维护。
2.CAT模型
CAT主要支持以下四种监控模型:
- Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数
- Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小
- Heartbeat 表示程序内定期产生的统计信息, 如CPU利用率, 内存利用率, 连接池状态, 系统负载等
- Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟
3.CAT追踪的方式
CAT在跨进程和跨线程的情况需要使用context的方式把调用连接起来。连接需要有3个参数:子节点、父节点、根节点。在cat类定义了这样的接口:
public static interface Context {
public final String ROOT = "_catRootMessageId";
public final String PARENT = "_catParentMessageId";
public final String CHILD = "_catChildMessageId";
public void addProperty(String key, String value);
public String getProperty(String key);
}
4.CAT如何使用
CAT的客户端使用比较好理解。根据上面模型的介绍。使用方式如下:
Transaction t = Cat.newTransaction("URL", "pageName");
try {
Cat.logEvent("URL.Server", "serverIp", Event.SUCCESS, "ip=${serverIp}");
Cat.logMetricForCount("metric.key");
Cat.logMetricForDuration("metric.key", 5);
yourBusiness();
t.setStatus(Transaction.SUCCESS);
} catch (Exception e) {
t.setStatus(e);
Cat.logError(e);
} finally {
t.complete();
}
5.总结
- 介绍了CAT的定位,是一个实时监控系统,优势在于容易二开和定制。
- 介绍了CAT的模型结构,Transaction 、Event 、Heartbeat 、Metric 模型的设计目的
- 介绍了使用CAT中context的3个参数来进行调用追踪
- 介绍了最简单CAT的使用方式。
后面会基于公司的场景来使用CAT