链路追踪-CAT简介

链路追踪的原理和实现

原理:可以参考:Dapper:谷歌的大规模分布式跟踪系统
实现:
未开源:淘宝EagleEye、微博Watchman、京东CallGraph、美团MTrace等等
开源:zipkin、cat、pinpoint
开源产品的对比:

产品介绍和搭建过程

具体参照官方文档:https://github.com/dianping/cat

监控类型

  • Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
    a).某些运行期单元要花费一定时间完成工作, 内部需要其他处理逻辑协助, 我们定义为 Transaction.
    b).Transaction可以嵌套(如http请求过程中嵌套了sql处理).
    c).大部分的Transaction可能会失败, 因此需要一个结果状态码.
    d).如果Transaction开始和结束之间没有其他消息产生, 那它就是Atomic Transaction(合并了起始标记).
    e)Transaction的一定要complete

  • Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
    Heartbeat 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
    Heartbeta表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。

  • Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
    Metric一共有三个API,分别用来记录次数、平均、总和,统一粒度为一分钟
    1).logMetricForCount用于记录一个指标值出现的次数
    2).logMetricForDuration用于记录一个指标出现的平均值
    3).logMetricForSum用于记录一个指标出现的总和

使用教程

参照官方用户文档:http://10.81.233.141:8080/cat/r/home?domain=cat&ip=All&date=2018070411&reportType=day&op=view