0x1 为什么需要APM
随着网站用户量越来越多,架构和业务越来越复杂,只靠传统的主机性能监控和日志分析已经不能充分满足性能的监控需求,深入至业务内部的性能监控,精准、及时定位出业务链路中的性能瓶颈,才能及时解决问题。特别是对于一些重大项目,比如618、双十一、政府民生项目等。
APM的优点:
- 了解拓扑结构,用户访问应用的频率,应用访问数据库或者其他系统能够以可视化得方式展示出来拓扑结构。并且用流向辅助
- 实时的监控每个事务
- 对应用本身性能影响非常小
0x2 前生今世
APM最早是谷歌公开的论文提到的 Google Dapper。Dapper是Google生产环境下的分布式跟踪系统,自从Dapper发展成为一流的监控系统之后,给google的开发者和运维团队帮了大忙,所以谷歌公开论文分享了Dapper (参考以及使用了其他的技术辅助Magpie、X-Trace、bigtable)
http://bigbully.github.io/Dapper-translation/
0x3 主流产品
目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是参考Google的Dapper实现的,如下:
产品名称 | 开发公司 | 优劣势 | github or website |
---|---|---|---|
pingpoint | 韩国Naver | 数据力度细、hbase、性能损耗大、无侵入 | https://github.com/naver/pinpoint |
CAT | 美团 | 国内用户多、客户端多、侵入 | |
ZipKin | 简单、轻量、侵入 | ||
Jaeger | uber | - | https://github.com/jaegertracing/jaeger |
skywalking | 国内 | 用户多、性能高、无侵入 | https://skywalking.apache.org/downloads/ |
文字描述对比:
- Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。有侵入
- CAT是由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。
- pinpoint韩国Naver团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多
- Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。
评论