《美團客戶端監控與異常排查實踐.pdf》由會員分享,可在線閱讀,更多相關《美團客戶端監控與異常排查實踐.pdf(43頁珍藏版)》請在三個皮匠報告上搜索。
1、美團客戶端監控與異常排查實踐美團客戶端監控與異常排查實踐背景背景監控報警監控報警異常排查異常排查技術挑戰技術挑戰總結總結6背景異常發現異常排查異常修復痛點異常發現慢異常定位慢8歸因2個監控報警異常發現慢異常排查異常定位慢目錄目錄背景背景監控報警監控報警異常排查異常排查技術挑戰技術挑戰總結總結9監控報警11業務異常反饋渠道定位失敗分享失敗頁面無法跳轉客服反饋客服反饋缺乏業務的異常監控12業務度200+200+品類品類2800+2800+城區縣城區縣13業務異常AOPAOP方式方式自動監控自動監控頁面跳轉失敗Json解析失敗網絡請求失敗注解方式注解方式半自動半自動監控監控View檢測:是否可見路徑
2、檢測:是否指定頁面錯誤回調:錯誤回調函數埋點方式埋點方式手手動動監控監控定位失敗登陸失敗下單失敗123下發簡易埋點下發簡易埋點動態監控動態監控支持下發簡易監控動態新增414背景如何動態新增簡易監控埋點?原理編譯期方法前插樁插樁代碼獲取當前對象this與方法參數在指定方法新增監控邏輯動態監控獲取獲取 當前對象當前對象ThisThis+方法參數方法參數插樁代碼插樁代碼方法體方法體動態監控方法代碼動態新增簡易監控點動態新增簡易監控點15技術選型編譯耗時iOS不支持Native代碼(補丁)動態腳本速度快無需編譯,直接運行支持android iOSLua、js平臺平臺數據數據倉庫倉庫1.生成信令2.翻譯
3、并上傳信令3.添加推送服務4.下發信令5.上報數據6.數據翻譯7.定位問題Shark 推送推送Push 推送推送配置服配置服務務客客戶端戶端Mapping服服務務CI構建構建用用戶畫像戶畫像產生動態腳本執行動態腳本16動態腳本具箱動態腳本工具箱腳本語法提示代碼混淆提示器(類方法字段)內置常見功能系統方法提示腳本Demo17業務監控架構設計酒旅酒旅美食美食打車打車自動監控自動監控半自動監控半自動監控手動監控手動監控位置信息位置信息上下文信息上下文信息系統環境系統環境用戶環境用戶環境日志上報日志上報信令下發信令下發動態回撈動態回撈方法反方法反混淆混淆資源資源idid還原還原KafkaKafkaES
4、ES存儲存儲數據計算數據計算動態配置動態配置服務服務StormStorm作業作業業務層接口層基礎SDK基礎服務監控平臺IM/IM/郵件郵件外賣外賣AOPAOP業務視圖業務視圖實時監控實時監控個案排查個案排查優化對比優化對比動態監控動態監控輔助信息設計思路 多種監控方式 實時數據指標 分鐘級監控報警 可視化監控視圖18效果19完善監控體系目錄目錄背景背景監控報警監控報警異常排查異常排查技術挑戰技術挑戰總結總結20異常分類無有效日志異常無日志信息的異常只有系統日志的異常日志被截斷的異常小概率異常 只發生一次的異常 上下文數據相關的異常 地理位置有關的異常java.lang.RuntimeExcep
5、tion:An error occurred while executing doInBackground()at android.support.v4.content.ModernAsyncTask$3.done()at java.lang.Thread.run(Thread.java:764).3 more3 moreCrash監控發現崩潰業務監控發現異常排查現狀3 3.QA.QA復現復現1 1.發臨時包發臨時包2 2.在線調試在線調試系統碎片化系統碎片化網絡環境網絡環境機型機型ROMROM系統版本系統版本本地環境本地環境需用戶需用戶配合配合解決時間長解決時間長用戶難接受用戶難接受網絡不穩
6、定網絡不穩定調試成本高調試成本高方式方式弊端弊端站在異常排查的度的監控監控監控依賴于異常排查提供有效日志,來解決無有效日志異常異常排查異常排查反過來又依賴于監控的時機獲取歸因信息,來解決小概率異常排查異常的信息維度 目標:無有效日志異常 用戶操作路徑 方法調用堆棧 目標:小概率異常 上下文數據 權限列表 網絡請求與響應 異常時間 上報時間 存儲時間 異常頻率 手機型號 系統版本 應用版本 設備標識 登錄狀態 進程狀態 線程狀態 埋點日志位置維度-WhereQA用戶操作路徑方法調用堆棧模擬成功復現用戶操作路徑記錄用戶的瀏覽頁面記錄用戶的點擊操作方法調用堆棧記錄異常發生時的方法調用堆棧26戶操作路
7、徑原理記錄訪問頁面注冊生命周期回調記錄點擊事件AOP onClick方法27法調堆棧java.lang.RuntimeException:An error occurred while executing doInBackground()at android.support.v4.content.ModernAsyncTask$3.done()at java.lang.Thread.run(Thread.java:764).3 more3 more系統方法居多無關鍵信息原理記錄方法調用堆棧技術選型系統提供的方法調用堆棧自己記錄方法調用堆棧系統提供的方法調用堆棧28記錄法調堆棧方法執行日志方法執
8、行日志線程過濾線程過濾方法識別方法識別方法過濾方法過濾對象池對象池LogLog對象對象生成隊列生成隊列消費隊列消費隊列DBDB插樁代碼插樁代碼方法體方法體編譯插樁運行時異步記錄方法代碼實現編譯期字節碼插樁ASM運行期異步線程記錄29效果時間序列線程信息關鍵字搜索安全加密30歸因維度-why上下文數據 當前對象this 方法入參關聯數據 權限列表 網絡請求與響應歸因維度網絡狀態應用權限方法入參當前對象網絡請求網絡響應31法當前對象與法參數原理 編譯期方法前插樁 異步記錄當前對象this、方法參數 Gson序列化 深淺拷貝Method BodyMethodthisarg1arg2arg3Line1
9、Line2Line3body32效果仿IDE的設計字段類型字段名稱字段值支持類型基本類型對象類型容器類型當前對象This方法參數33應權限原理 PackageManager.GET_PERMISSIONS場景 外賣、配送、酒店等業務依賴于定位 定位依賴于定位權限34監控與異常排查體化 效果動態可配環境信息方法對象this方法參數方法調用堆棧用戶操作路徑應用權限列表網絡狀態網絡請求網絡返回目錄目錄背景背景監控報警監控報警異常排查異常排查技術挑戰技術挑戰總結總結3536挑戰1:戶操作路徑問題問題1 1 如何翻譯資源如何翻譯資源IdId?資源id被內聯資源名稱被混淆系統資源名稱問題37思路38解決修
10、復前修復后39戶操作路徑問題2 如何記錄xml中的點擊事件xml布局里面的onClick標簽點擊事件不一定是onclick方法導致用戶點擊事件記錄不全40思路AppCompatViewInflater#createViewAOP DeclaredOnClickListeneronClick方法v7包看看源碼是怎么處理xml的onClick事件41挑戰2:法執路徑問題問題進入美團首頁11萬方法平均1ms調用300方法思路思路插樁過濾動態識別機制對象池方案42解決目錄目錄背景背景監控報警監控報警異常排查異常排查技術挑戰技術挑戰總結總結4344成果監控排查一體化一體化監控與異常排查一體化 完善監控體系 業務異常:被動反饋 主動發現 異常排查效率:小時級 分鐘級 異常自動攜帶多維度的排查信息 異常得到快速解決提升客戶端質量排查修復監控45未來止損修復異常自動降級策略Native to H5so to java完全修復異常信息自動聚合異常自動初步分析一體化一體化