天天看點

ARMS在APM工具選型中的實踐

前言

目前的系統在數字化轉型需求以及網際網路架構實施的影響下,越來越普遍地使用了微服務架構,我們在享受微服務帶來的好處(開發效率高, 獨立部署, 水準擴充, 故障與資源隔離等等)外,也帶來測試,事務,應用監控等各方面的困難。

ARMS在APM工具選型中的實踐

從上圖可以看出,在以分布式為主的網際網路架構下,應用間的調用變得越來越複雜,我們傳統使用的開發工程師主動埋點,運維人員到主機上查日志,組合調用鍊,監控應用的運作情況,顯得越來越力不從心。

為了更好地做到應用層面的監控,包括應用運作環境的基礎設施資料,系統業務調用情況,性能消耗分析,在發生性能,異常與故障問題時,能夠快速定位和解決問題,誕生了很多優秀的APM(Application Performance Management)工具。

這些APM工具都提供了包括名額統計資訊與調用鍊路跟蹤資訊。

常見的APM工具

APM工具包括名額收集與調用鍊收集。名額收集例如在某一段時間的請求數,異常數,錯誤數,響應時間RT, IAAS層的資源使用情況(例如cpu, memory, IO, load, 網絡), 也包括JVM的各種運作參數(例如 各記憶體分區情況,gc情況)。調用鍊收集包括業務請求中通路過的各應用,類,方式,在每個運作節點/方法上的時間消耗情況。

常見的APM工具有:

1、ARMS:由阿裡巴巴自研開發的一款APM工具。由于分布式微服務架構以阿裡為主體的企業很早就開始探索,阿裡集團内很早就有配套的鷹眼系統做相關的應用監控,為适應産品上雲輸出,阿裡在2016-08-04的時間就以ARMS的産品形式正式對外提供應用監控服務。

2、開源系的APM

u Pinpoint:基于java編寫的開源APM工具,由南韓人開發貢獻,功能完善,發展快,影響了很多其它的APM工具實作,在國内外使用比較廣泛。

u Skywalking:支援open tracing标準,由我國的吳晟主導開發的分布式追蹤,分析,告警的開源工具,目前是Apache旗下的開源項目,發展非常迅速,在各類開源APM工具裡國内的使用比較廣泛。

u ZipKin:支援open tracing标準,由Twitter公司開發貢獻,于2012年的時候就開始開源發展,是比較成熟的開源APM工具。

u Jaeger:支援open tracing标準,由Uber公司開發貢獻,是比較成熟的開源APM工具。

APM工具原理

盡管這些APM工具功能與實作各有不同,但基本上原理都是一樣的,這個原理基于google dapper的分布式追蹤技術論文,把APM工具實作總體上分為兩大部分:

1、對應用運作節點上進行應用埋點,在業務運作期間進行埋點資料的生成;

ARMS在APM工具選型中的實踐

2、通過APM的後端服務日志收集,資料清洗與聚合,把相應的處理結果持久化,并且提供豐富的可視化控制台。

ARMS在APM工具選型中的實踐

在這個調用鍊追蹤技術裡,還原調用鍊的功能主要依賴于兩個ID.

第一個ID是TraceID, 這個代表一個業務調用,就好像在電商系統裡發起的一個下單結算; 線上教育裡的一個選課流程; 物流系統裡的攬收; 這些業務從客戶觸發到獲得響應結果就是一個完整的請求,就是一次業務調用,它每一次的業務請求的都會獲得維一的TraceID;

第二個ID是RpcID (或者稱為SpanID), 在一次業務請求中,可能經過的應用會有多過,以一個電商下單業務為例: 它需要經過訂單系統建立訂單; 支付系統接受支付;庫存系統扣減産品庫存;會員系統給買家進行積分處理; 購物車系統會清理購物清單。這樣對于業務流經的每一個應用,都有一個有層次的RpcID, 這個RpcID可以認為是使用目錄層級記錄的,從這個RpcID來看,那怕它在同一個業務中被調用了多次,它的每一次進入的RpcID都是一樣的。

依賴于TraceID & RpcID,我們可以很友善地還原整個調用鍊。

ARMS在APM工具選型中的實踐

ARMS功能上的優勢:

客觀來說, 優秀的APM工具發展到現在,基礎功能上的差異都不大。例如以前開源APM比較薄弱的自動埋點功能也跟進了ARMS這些先發的産品; 在異步産品如各類MQ的支援上也慢慢拉平;SQL/API參數抓取的功能方面也是補足。我們再來列一下ARMS的優點:

1、名額資料的準确性

ARMS的agent把名額資料與調用鍊資料是分開兩種類型來采集統計的, 相應的名額資料不受調用鍊的采樣率的影響,會在具體的運作節點進行完完全全的統計後,精準到上傳加載到ARMS後端。(而有些優秀的APM工具是通過采樣上來的調用鍊進行加工處理,再來産出相應的名額,這在準确性上會有一定的丢失。)

2、線程棧捕獲

因為是JAVA自動埋點的原理是對已知的架構進行位元組碼加強,當某架構不在已支援的範圍内,那麼這段通路的資訊就不會被記錄下來。ARMS可以通過設定調用超過一定時長後,可以通把整個線程棧捕獲下來,這樣我們就可以通過線程棧的分析進行補充定位。

3、線程分析

ARMS可以通過線程分析頁簽,清淅地看到各類線程的資源占用情況。例如可以知道目前的某線程池線程數是多少, 占用cpu最多的線程是那個, 占用的百分比情況,并且可以看到線程的運作狀态。

4、業務關聯日志

ARMS這邊可以通過給合傳統的log4j等技術,在輸出業務日志上可以把相應的TraceID 就像線程ID那樣通過友善的配置就可以與業務日志同時輸出。另外,ARMS與阿裡雲的SLS進行整合,可以通過ARMS的頁面友善地根據調用鍊的TraceID查找到關聯的業務日志,這樣需要結合業務日志定位時,更友善實用。

5、智能合并能力

ARMS對于相同的調用,例如遞當,循環會進行智能合并,顯示循環的次數,執行的最大時長,最小時長,平均時長。

ARMS在APM工具選型中的實踐

6、主動診斷能力

ARMS提供了主動診斷能力,可以通過標明具體的時間,執行主動診斷,ARMS會分析這一段時間内的應用運作情況,自動總結這一段時間内的問題,并且結合阿裡的經驗,産出具體的報表。我們依據這個報表,可以加速我們的定位與優化。

7、豐富的報警能力

完善報警體系,ARMS提供了豐富的報警規則,我們可以對相應的規則進行開啟/關停,編輯,這樣可以快速搭建報警體系。在報警通道方面,可以直接發對接釘釘/WebHook/Email/短信網關等。

運維能力上的優勢

1、 按需監控啟停管理

通過ARMS的管理控制台,我們可以批量在管理應用的啟停,可以一鍵停止所有的ARMS監控,也可以一鍵啟動相關應用的監控。非常符合上雲的按需要使用觀念。

2、動态采樣率變更

在面對特殊的時間點或者異常出現機率的時候,我們希望動态調整采樣率,例如通過調大采樣率來捕獲這些機率極少的調用鍊,借助ARMS的配置管理,我們可以非常友善地把更齊全的調用鍊收集起來;通過調小采樣率來保證存儲空間的合理使用(其它的APM工具在做采樣率的變更時,需要應用的重新配置,啟動,這不但處理起來麻煩,并且影響業務的邊續性,在實際操作上很難下定決心去在運作期間中斷業務去做改變采樣率的變更。)

3、 綁定參數的開關

雖然很多APM工具都可以提供綁定參數的功能。但很多時候,如果對于業務資料敏感的系統,并不希望這類APM工具在非必要的時候采集SQL/API的運作參數。是以ARMS在它的配置管理裡提供這麼一個功能非常有意義,也就是當需要收集這些運作的業務參數進行問題定位分析的時候,那麼隻要打開就可以了,使用完畢後,再通過把這些開關關上,那麼就可以保護我們的業務資料不外洩漏出去了。

4、接入簡易

可通過更簡易的方式如阿裡容器ACK/EDAS/SAE等各種非常便捷的接入方式,隻需要簡單的YAML注解或按鈕即可完成接入。

5、 元件穩定免運維

因為ARMS是商業化的産品,是以所有的元件都是不需要我們使用方運維的。如果使用開源自建,那麼我們就需要對日志收集,計算清洗服務,存儲産品本身進行運維,包括相應的叢集規模,清理處理,擴容處理,如果在峰值過後,不進行資源回收,也會産生額外的使用浪費。

成本使用上的優勢

1、 ARMS是按接入節點,接入的小時(時長)計費的,這樣可以充分發揮雲上産品的優勢。按需要使用,按需要的應用節點付費。另外ARMS單純地按照節點數來計算,并不受采樣率的變動而産生變化,這樣對于大采樣率的應用是有一定的優勢。

2、 ARMS有相應的資源包,可以通過購買資源包的方式進一步節省費用。

3、 因為産品的組合因素,ARMS如果搭配阿裡雲的容器(ACK)使用,計費會自動5折。

最後,這裡列一下開源與ARMS的一個成本的比較供大家參考:

ARMS在APM工具選型中的實踐

備注

1、開源的按照統一統計資料存15天,全量明細資料存3天計算(ARMS的資料是全天24小時使用,存儲60天,在非容器下按年包折下來的月費用。)

2、人力成本以具有開發能力的運維人員月薪3萬計算。人力成本,主要參數變動帶來的釋出,後端系統的不穩定帶來的效率損失,後端系統的維護操作。中大型的會做一些定制的開發(例如采樣的動态配置化生效)

綜述

在阿裡雲上,ARMS在APM層面提供了足夠豐富的功能;可以友好地運維操作;另外通過合理地按需使用,結合資源包,以及容器的方式運作,使用起來還高效與節省。作為基礎設施的實用監控,不重複發明輪子,不重人力資源投入,綜合考慮各方面因素,最終選擇使用ARMS。

【更多精彩】

1.中間件爆款一折起,還有阿裡巴巴十年最佳實踐深度解密,點選馬上了解:

https://www.aliyun.com/activity/daily/commercial?spm=5176.20960838.0.0.6a54305etoEn4D

2.【填問卷領淘公仔】點選馬上填寫問卷:

https://survey.aliyun.com/apps/zhiliao/YmW95Gk8bU

【加入行業實戰交流釘釘群】

阿裡雲專門成立了“網際網路架構更新實戰課”釘釘群,每周邀請一位阿裡雲專家在群内進行行業最佳實踐直播,每天分享行業前沿幹貨,釘釘掃碼馬上加入。

ARMS在APM工具選型中的實踐