1. 程式人生 > >如何使用阿裏雲ARMS診斷Java服務端報錯問題

如何使用阿裏雲ARMS診斷Java服務端報錯問題

上下 EDA 創建 為什麽 iyu 錯誤日誌 接口 異常 click

摘要: 這是ARMS團隊推出的“網站常見問題1分鐘定位系列篇”第二文。

技術分享圖片

我的網站為什麽一錯再錯
網頁報錯,尤其是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點開始系統的錯誤發生了激增的現象!

3、錯誤溯源:找到導致錯誤的原因

光看到錯誤的分布還遠遠不夠,我們需要知道這個錯誤發生的原因。雖然日誌中Java的異常堆棧中包含了調用的代碼片段,但並不包含這次調用的完整上下遊和請求參數。
ARMS的探針技術,通過字節碼增強技術,可以以很小的性能開銷完整捕獲異常上下遊的完整調用快照,讓異常的原因更加清晰。
技術分享圖片
技術分享圖片

我們可以從調用鏈快照中清晰地看到一次異常中的完整鏈路,我們甚至可以看到這次調用的詳細的請求參數和異常日誌,以獲得更加詳細的問題上下文信息。
至此,我們完成了一次全白屏化的線上錯誤診斷過程,通過ARMS探針診斷工具,再也不需要登錄機器診斷線上錯誤問題了。
4、防患於未然 -- 設置告警

當然,您可以在ARMS的告警設置中對某一個接口或全部接口設置告警,讓頁面接口出現錯誤時第一時刻通知到您的運維團隊。

原文鏈接

本文為雲棲社區原創內容,未經允許不得轉載。

如何使用阿裏雲ARMS診斷Java服務端報錯問題