ArgusAPM可視化性能監(jiān)控平臺
ArgusAPM是360手機衛(wèi)士客戶端團隊繼RePlugin之后開源的又一個重量級開源項目。ArgusAPM是360移動端產(chǎn)品使用的可視化性能監(jiān)控平臺,為移動端APP提供性能監(jiān)控與管理,可以迅速發(fā)現(xiàn)和定位各類APP性能和使用問題,幫助APP不斷的提升用戶體驗。
產(chǎn)品價值
- 實時掌控應(yīng)用性能
- 降低性能定位成本
- 有效提升用戶體驗
監(jiān)控模塊
ArgusAPM目前支持如下性能指標:
- 交互分析:分析Activity生命周期耗時,幫助提升頁面打開速度,優(yōu)化用戶UI體驗
- 網(wǎng)絡(luò)請求分析:監(jiān)控流量使用情況,發(fā)現(xiàn)并定位各種網(wǎng)絡(luò)問題
- 內(nèi)存分析:全面監(jiān)控內(nèi)存使用情況,降低內(nèi)存占用
- 進程監(jiān)控:針對多進程應(yīng)用,統(tǒng)計進程啟動情況,發(fā)現(xiàn)啟動異常(耗電、存活率等)
- 文件監(jiān)控:監(jiān)控APP私有文件大小/變化,避免私有文件過大導(dǎo)致的卡頓、存儲空間占用等問題
- 卡頓分析:監(jiān)控并發(fā)現(xiàn)卡頓原因,代碼堆棧精準定位問題,解決明顯的卡頓體驗
- ANR分析:捕獲ANR異常,解決APP的“未響應(yīng)”問題
ArgusAPM特性
- 非侵入式
? 無需修改原有工程結(jié)構(gòu),無侵入接入,接入成本低。
- 無性能損耗
? ArgusAPM針對各個性能采集模塊,優(yōu)化了采集時機,在不影響原有性能的基礎(chǔ)上進行性能的采集和分析。
- 監(jiān)控全面
? 目前支持UI性能、網(wǎng)絡(luò)性能、內(nèi)存、進程、文件、卡頓、ANR等各個維度的性能數(shù)據(jù)分析,后續(xù)還會繼續(xù)增加新的性能維度。
- Debug模式
? 獨有的Debug模式,支持開發(fā)和測試階段、實時采集性能數(shù)據(jù),實時本地分析的能力,幫助開發(fā)和測試人員在上線前解決性能問題。
- 支持插件化方案
? 在初始化階段進行設(shè)置,可支持插件接入,目前360手機衛(wèi)士采用的就是在RePlugin插件中接入ArgusAPM,并且性能方面無影響。
- 支持多進程采集
? 針對多進程的情況,我們做了相應(yīng)的數(shù)據(jù)采集及優(yōu)化方案,使ArgusAPM即適合單進程APP也適合多進程APP。
- 節(jié)省用戶流量
? ArgusAPM使用wifi狀態(tài)下上傳性能數(shù)據(jù),這樣避免了頻繁網(wǎng)絡(luò)請求帶來的耗電問題及用戶流量的消耗。
ArgusAPM項目結(jié)構(gòu)圖
整體架構(gòu)分為兩部分:一是左邊藍色的部分:性能采集模塊,一是右邊的綠色部分:Gradle Plugin模塊。
下面分別針對這兩部分做簡單的介紹:
一. 性能采集模塊
該模塊總共分為五個Module,并最終生成三個aar文件,即:
argus-apm-main.aar:APM項目的核心業(yè)務(wù)模塊
argus-apm-aop.aar:AOP代碼的織入模塊
argus-apm-okhttp.aar:采集OKHTTP網(wǎng)絡(luò)性能
其中之所以拆分那么多的模塊,是為了能夠讓我們可插拔式的去使用里面的功能,例如,如果我項目中沒有使用OKHTTP相關(guān)的功能,那么我們就可以關(guān)閉相應(yīng)的依賴。
二. Gradle Plugin模塊
該模塊主要具備兩個作用:
-
支持AOP編程,方便ArgusAPM能夠在編譯期織入一些性能采集的代碼;
-
通過Gradle插件來管理依賴庫,使用戶接入ArgusAPM更簡單。
最終,我們在接入ArgusAPM的時候,只需要簡單的應(yīng)用插件即可,而不需要再單獨的去依賴各個aar文件。
