唯品会Microscope——大规模分布式系统的跟踪、监控、告警平台 - 简书
http://www.jianshu.com/p/fdb6cbe95eb8
国内的很多互联网公司也是基本上按照Dapper的论文模型来实现链路监控:淘宝的鹰眼,新浪微博的watchman,京东的hydra。一脉相承。
eBay则是用了一套叫做Transaction的概念来实现链路监控,大众点评网的CAT的开发者就来自eBay,所以两者高度相似。
链路监控的核心是:用一个全局的 ID 将分布式请求串接起来,在JVM内部通过ThreadLocal传递,在跨JVM调用的时候,通过中间件(http header, framework)将全局ID传递出去,这样就可以将分布式调用串联起来。
模型有了,剩下的工作就是如何获取数据了。
淘宝有众多的中间件,先天优势,在中间件中埋点就可以了。新浪微博采用的方式比较前卫(个人感觉),用的是字节码增强技术来埋点,类似Btrace的做法。
Java的开源世界中已经有了一个很著名的Metrics软件包。eBay的CAL系统就集成了这个软件包,用于获取监控指标。
数据来源可以总结为:
1、请求调用链
2、系统、业务 metrics(CPU, IO, memory,disk, http, servlet, db, cache, jvm...)
3、异常堆栈
4、GC log
数据有了,下一步就是怎么把客户端的数据传输到服务器端,进行分析、存储、展示了。
后端的数据处理,我们采用的是SEDA架构,多阶段事件驱动架构,用disruptor做线程之间的数据交换。将整个处理流程抽象为:验证、分析、告警、存储。