如何使用阿裏雲ARMS診斷Java服務端報錯問題
我的網站為什麽一錯再錯
網頁報錯,尤其是5XX錯誤是互聯網應用最常見的問題之一。5XX錯誤通常發生於服務端。服務端是業務邏輯最復雜,也是整條網絡請求鏈路中最容易出錯、出了錯最難排查的地方。
運維工程師與研發工程師排查此類問題,通常要通過登錄機器查看日誌來定位問題。對於一般的Java應用錯誤日誌,通常是這幅模樣:
一般來說,對於邏輯不算太復雜、歷史不算“太悠久”的應用來說,登錄機器看日誌的方式能夠很大程度上地解決網站報錯的問題。但遇到下列情況時,使用傳統的方式可能就有些困難:
在一個分布式Java應用集群中,我想知道這類錯誤每分鐘發生了多少次,什麽時候開始發生的;
我想知道這個錯誤對應的是哪個Web請求,Web請求的參數是什麽;
客服給了我一個用戶下單失敗的訂單號,我想知道這個用戶下單為啥失敗,到底哪裏錯了;
使用阿裏雲ARMS的0埋點技術,1分鐘定位“錯”問題
利用阿裏雲ARMS(應用實時監控 - 鏈接)的異常自動捕捉、收集、統計、溯源能力,您只需要在您的應用啟動腳本中增加幾行探針加載邏輯 - 鏈接,不需要對您的應用代碼做任何改動,即可以讓應用中所有“錯”調用無處可逃。
1、對應用中的所有錯誤進行全方位監控,只需要安裝ARMS Java探針(如果您的應用托管於EDAS,您甚至可以跳過這一步 - 鏈接)
開通ARMS,並創建應用;
下載Java探針包並解壓;
在Java應用啟動腳本中增加 -javaagent:/{user.workspace}/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar -Darms.licenseKey=xxx -Darms.appId=xxx (appId和licenseKey根據頁面分配的信息填寫,詳情可看 - 鏈接)
打開ARMS頁面,數據開始上報,驗證Java探針安裝成功。
2、所有“錯”一覽無余
成功安裝探針後,在應用概覽中我們立即就能看到系統中發生的所有“異常”,異常類型的分布以及發生次數。
點擊“應用詳情”,可以看到更詳細的異常分布圖,您可以看到集群或者單臺機器的錯誤詳情,從下圖中,我們可以看到從11點開始系統的錯誤發生了激增的現象!
光看到錯誤的分布還遠遠不夠,我們需要知道這個錯誤發生的原因。雖然日誌中Java的異常堆棧中包含了調用的代碼片段,但並不包含這次調用的完整上下遊和請求參數。
ARMS的探針技術,通過字節碼增強技術,可以以很小的性能開銷完整捕獲異常上下遊的完整調用快照,讓異常的原因更加清晰。
我們可以從調用鏈快照中清晰地看到一次異常中的完整鏈路,我們甚至可以看到這次調用的詳細的請求參數和異常日誌,以獲得更加詳細的問題上下文信息。
至此,我們完成了一次全白屏化的線上錯誤診斷過程,通過ARMS探針診斷工具,再也不需要登錄機器診斷線上錯誤問題了。
4、防患於未然 -- 設置告警
當然,您可以在ARMS的告警設置中對某一個接口或全部接口設置告警,讓頁面接口出現錯誤時第一時刻通知到您的運維團隊。
原文鏈接
本文為雲棲社區原創內容,未經允許不得轉載。
如何使用阿裏雲ARMS診斷Java服務端報錯問題