鏈接地址:http://www.infoq.com/cn/articles/apm-Pinpoint-practice
1、什么是APM?
APM,全稱:Application Performance Management ,目前市面的系統基本都是參考Google的Dapper(大規模分布式系統的跟蹤系統)來做的,翻譯傳送門《google的Dapper 中文翻譯》
思考下:不遵守該理論的是偽APM,耍流氓嗎?
APM的核心思想是什么? 在應用服務各節點相互調用的時候,從中記錄並傳遞一個應用級別的標記,這個標記可以用來關聯各個服務節點之間的關系。比如兩個應用服務節點之間使用 HTTP 作為傳輸協議的話,那么這些標記就會被加入到 HTTP 頭中。可見如何傳遞這些標記是與應用服務節點之間使用的通訊協議有關的,常用的協議就相對容易加入這些內容,一些按需定制的可能就相對困難些,這一點也直接決定了實現分布式追蹤系統的難度。
2、為什么要用APM?
有業務痛點,才要尋求解決方案,個人認為,APM需要優先解決測試環境下兩個場景問題,基於測試先行的原則考慮:
優先關注宏觀數據,並不是說測試人員無須關注微觀層面的問題,在測試角度來看,先解決性能測試環境的數據采樣、收集問題,再去評估生產環境,而線上的鏈路監控需要研發跟運維去配合,【研發角度場景】相對於測試人員來說是弱關注了。
3、市面上有哪些APM工具?
- Pinpoint
Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java.
https://github.com/naver/pinpoint - SkyWalking
A distributed tracing system, and APM ( Application Performance Monitoring ) .
http://skywalking.org - Zipkin
Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data. Zipkin’s design is based on the Google Dapper paper.
http://zipkin.io/ - CAT (大眾點評)
CAT基於Java開發的實時應用監控平台,包括實時應用監控,業務監控。
https://github.com/dianping/cat