常見開源APM監控工具介紹
隨著分散式應用、雲計算的不斷深入發展,業務系統的邏輯結構變得越來越複雜,目前很多應用都採用了分散式架構,即從一個大程序演變成一系列服務的形式,運行在不同的平台不同的機器上,這種架構的複雜性和靈活性為發現和定位性能問題、系統安全運維帶來了更高的挑戰。此時需要一種新的技術手段,用來關注應用哪些問題影響了企業服務的性能和可用性,關注如何識別這些問題以及如何解決這些問題。本文將介紹目前業界主流的APM技術工具,解決分散式架構帶來的監控和運維上的挑戰。
1、背景知識
APM(ApplicationPerformance Management)是一種應用性能監控工具,通過匯聚業務系統各處理環節的實時數據,分析業務系統各事務處理的交易路徑和處理時間,實現對應用的全鏈路性能監測。目前主流的APM工具,基本都是參考了Google的Dapper(大規模分散式系統的跟蹤系統)體系,通過跟蹤業務請求的處理過程,完成對應用系統在前後端處理、服務端調用的性能消耗跟蹤,提供可視化的界面來展示對跟蹤數據的分析。
APM工具與傳統的性能監控工具的區別在於,不僅僅提供一些零散的資源監控點和指標,其主要關注在系統內部執行、系統間調用的性能瓶頸分析,這樣更有利於定位到問題的具體原因。
2、工具介紹
近年來APM技術和市場得到了快速發展,隨著移動互聯網的爆發,APM的產業擴張的比較明顯,重心也從最初的IT和技術運維轉到了商業核心業務,相關產品也如雨後春筍般大量湧現出來,商業產品有國外的Dynatrace、Appdynamics、New Relic,國內的RichAPM、聽雲、OneAPM等,開源產品也得到了迅速發展。隨後小編帶大家一起了解幾種業界主流的開源APM工具。
2.1、Pinpoint
Pinpoint是由一個韓國團隊實現並開源,針對Java編寫的大規模分散式系統設計,通過JavaAgent的機製做位元組代碼植入,實現加入traceid和獲取性能數據的目的,對應用代碼零侵入。
圖1:Pinpoint架構示意圖
Pinpoint通過在Host App啟動時加入PinpointAgent來採集數據,然後把採集到的跟蹤數據和性能數據實時發送到Pinpoint Collector,Collector收集之後存放到HBase資料庫中,由HBase做MapReduce運算,分析出分散式系統的機器訪問關係拓撲圖、每個節點的線程狀態、請求/響應數據、調用棧信息、應用程序的性能數據,通過Pinpoint WebUI可以進行實時的展示。
2.2、SkyWalking
Skywalking是由國內一位叫吳晟的工程師開源,已加入Apache孵化器,是一個APM系統,為微服務架構和雲原生架構系統設計。它通過探針自動收集所需的指標,並進行分散式追蹤。通過這些調用鏈路以及指標,Skywalking APM會感知應用間關係和服務間關係,並進行相應的指標統計。Skywalking支持鏈路追蹤和監控應用組件基本涵蓋主流框架和容器,如國產PRC Dubbo和motan等,國際化的spring boot,spring cloud。
圖2:Skywalking架構示意圖
Skywalking總體架構主要分為三部分:
1)SkywalkingAgent:探針,原理同Pinpoint一樣,使用JavaAgent做位元組代碼植入,用來收集和發送數據到Skywalking Collector;
2)SkywalkingCollector:鏈路數據收集器,數據可以落地到ElasticSearch或者H2;
3)SkywalkingUI:Web可視化平台,用來展示落地的數據。
2.3、Zipkin
Zipkin是由Twitter開源,是分散式鏈路調用監控系統,聚合各業務系統調用延遲數據,達到鏈路調用監控跟蹤。Zipkin基於Google的Dapper論文實現,主要完成數據的收集、存儲、搜索與界面展示。Java應用端的數據採集通過Brave組件來實現,Brave組件通過實現一系列的Java攔截器,來做到對http/servlet請求、資料庫訪問的調用過程跟蹤,然後在spring之類的配置文件里加入這些攔截器,完成對Java應用的性能數據採集。
圖3:Zipkin架構示意圖
Zipkin主要分為四個部分:
1)ZipkinCollector:採集數據傳輸到Collector之後,Collector負責校驗數據、存儲數據、為數據建立索引;
2)Storage:Zipkin的數據可以存儲在Cassandra、ElasticSearch和MySQL中;
3)Query API:提供數據的查詢和檢索服務;
4)Web UI:可視化展示平台,用於展示跟蹤數據。
2.4、CAT
CAT是由大眾點評開源的項目,基於Java開發的實時應用監控平台,包括實時應用監控,業務監控,可以提供十幾張報表展示。Cat的定位是實時監控平台,但與其說是監控平台,更像是個數據倉庫,在數據倉庫的基礎上提供豐富的報表分析功能。CAT實現跟蹤的手段是通過在代碼裡面增加一些「埋點」來記錄自己需要的數據,是一個侵入式的項目,開發團隊對此大都有抵觸情緒。
圖4:CAT架構示意圖
CAT分客戶端和伺服器端,客戶端使用cat介面向伺服器端上報統一格式的日誌信息。CAT的客戶端是產生日誌的地方(一般來說就是被監控的應用,上圖中的應用節點),相應的伺服器端則是接受日誌、消費日誌的地方(上圖中的server節點),日誌消費後生成會日誌報表。
3、總結
本文中小編主要介紹了4種主流的開源APM工具,最後我們從代碼侵入方式、數據落地方式、性能分析報表等三個方面對上述工具進行對比分析:
通過對比可知,主流APM工具為了更好地進行推廣,主要採用了侵入程度低的方式完成對應用代碼的改造。並且為了應對雲計算、微服務、容器化的迅速發展與應用帶來的APM監控的數據的海量增長的趨勢,數據落地方式也主要以海量存儲資料庫為主。未來在數據分析和性能分析方面,大數據和機器學習將在APM領域發揮重要的作用,APM的功能也將從單一的資源監控和應用監控,向異常檢測、性能診斷、未來預測等自動化、智能化等方向發展,讓我們共同期待開源社區或組織帶來功能更強大的免費產品!
Hadoop大數據應用
你也能懂大數據


TAG:Hadoop大數據應用 |