链路追踪-CAT简介
<p>[TOC]</p>
<h1>链路追踪的原理和实现</h1>
<p>原理:可以参考:Dapper:谷歌的大规模分布式跟踪系统
实现:
未开源:淘宝EagleEye、微博Watchman、京东CallGraph、美团MTrace等等
开源:zipkin、cat、pinpoint
开源产品的对比:
<img src="https://www.showdoc.cc/server/api/common/visitfile/sign/a9d838066e31af724de707e755fabdcc?showdoc=.jpg" alt="" /></p>
<h1>产品介绍和搭建过程</h1>
<p>具体参照官方文档:<a href="https://github.com/dianping/cat">https://github.com/dianping/cat</a></p>
<h1>监控类型</h1>
<ul>
<li>
<p>Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
a).某些运行期单元要花费一定时间完成工作, 内部需要其他处理逻辑协助, 我们定义为 Transaction.
b).Transaction可以嵌套(如http请求过程中嵌套了sql处理).
c).大部分的Transaction可能会失败, 因此需要一个结果状态码.
d).如果Transaction开始和结束之间没有其他消息产生, 那它就是Atomic Transaction(合并了起始标记).
e)Transaction的一定要complete</p>
</li>
<li>
<p>Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
Heartbeat 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
Heartbeta表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。</p>
</li>
<li>Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
Metric一共有三个API,分别用来记录次数、平均、总和,统一粒度为一分钟
1).logMetricForCount用于记录一个指标值出现的次数
2).logMetricForDuration用于记录一个指标出现的平均值
3).logMetricForSum用于记录一个指标出现的总和</li>
</ul>
<h1>使用教程</h1>
<p>参照官方用户文档:<a href="http://10.81.233.141:8080/cat/r/home?domain=cat&ip=All&date=2018070411&reportType=day&op=view">http://10.81.233.141:8080/cat/r/home?domain=cat&ip=All&date=2018070411&reportType=day&op=view</a></p>