1. 鹰眼
鹰眼是淘宝的分布式日志跟踪系统,通过收集和分析在不同的网络调用中间件上的日志埋点,可以得到同一次请求上的各个系统的调用链关系,有助于梳理系统间的依赖来源关系、容量规划,也有助于分析系统调用瓶颈、定位异常根源。同时,业务方也可以在调用链上添加自己的业务埋点,使网络调用和实际业务内容得到关联。目前互联网公司类似的产品有:Google Dapper、Twitter Zipkin。
参考和文档下载:http://download.csdn.net/detail/villa123/7418635。该文档来自JavaOne 2013 大会。
重点归纳:
1)埋点和输出日志(怎么埋点,怎么输出,数据怎么透传,要透传哪些数据?)
中间件埋点,基于ThreadLocal
异步写,采样
2)收集和存储日志(怎么采集?怎么存?)
日志收集agent实时抓日志,按traceid汇总,不同的存储方式
3)分析调用链
基于入口的链路分析(分析流量、整体的链路map即调用链关系、调用依赖关系、异常定位)
实时分析:入口和链路签名
2. google dapper,大规模分布式系统的跟踪系统
参考文章:https://bigbully.github.io/Dapper-translation/
以全局搜索为例,比如出现查询耗时不正常,某一个应用的工程师无法对全局调用关系那么了解,那么定位会无法入手,无从知晓这个问题到底是由哪个服务调用造成的。
重点归纳:
1)低侵入,低消耗:跟踪系统对在线服务的影响应该足够小。
2)应用级别的透明:对应用的程序员来说,是不需要知道有跟踪系统存在的。若一个跟踪系统的生效需要依赖应用的开发者主动配合,那它也太脆弱了。【lib植入到无所不在的公共组件中 & 自适应采样率或配上开关,使跟踪系统变得可伸缩】
3)延展性:随着服务和集群规模扩大,监控系统都能hold住。持续跟踪,无所不在。