將應用的日誌採集到Log ServiceSLS,並在ARMS應用配置中配置相應的Project和Logstore後,您即可在ARMS中通過Log Service進行日誌分析。當應用出現業務異常問題時,您可以通過分析業務日誌,精準定位業務異常。
ARMS應用監控面向已開通新版計費的使用者提供全新的監控詳情頁面,新版計費詳情,請參見產品計費(新版)。
對於未開通新版計費的使用者,如需查看新版監控詳情頁面,可在應用列表頁面單擊切換新版。
前提條件
已接入應用監控。具體操作,請參見應用監控接入概述。
已開通Log ServiceSLS。登入Log Service控制台時,根據頁面提示開通Log Service。
已建立Project。具體操作,請參見建立專案Project。
已建立Logstore,具體操作,請參見建立Logstore。
已完成SLS資料擷取接入,具體操作,請參見資料擷取概述。
步驟一:關聯業務日誌
登入ARMS控制台,在左側導覽列選擇 。
在應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。
說明語言列的表徵圖含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
:接入應用監控的Python應用。
-:接入Managed Service for OpenTelemetry的應用。
在上方導覽列選擇
。在應用日誌關聯配置地區,選擇日誌源為Log ServiceSLS,開啟自動關聯業務日誌與TraceId開關,選擇Log Service所在地區,然後綁定Project和Logstore。
單擊儲存。
步驟二:查詢並分析日誌
在上方導覽列選擇
。篩選日誌。
在搜尋方塊中輸入查詢分析語句。
設定查詢分析的時間範圍。
您可以設定相對時間、整點時間和自訂時間。
說明查詢結果有1分鐘以內的誤差。
單擊查詢/分析,查看查詢分析結果。
常見問題
修改日誌XML配置後日誌未成功關聯上TraceId
如果是在SLS中查詢日誌時遇到該問題,請先確認日誌是否已自行上報至SLS或已在ARMS控制台綁定需要關聯的Project和Logstore。
確認SLS中存在資料後,再按以下兩種情況排查:
所有日誌都沒有關聯上TraceId,這種情況一般有以下幾種可能:
探針未成功掛載。
可通過查看ARMS控制台各指標是否正常展示確認。
探針總開關關閉或者關閉了某些外掛程式,例如關閉了Tomcat外掛程式。
可在自訂配置頁面的探針開關設定地區確認。
服務端架構不支援,例如使用了不支援的Web容器、RPC架構、定時任務架構、訊息架構等,支援的架構請參見ARMS應用監控支援的Java組件和架構。
使用了除log4j、log4j2、logback之外的日誌架構列印日誌或者對這些日誌架構的使用進行了深度的改動。
使用者日誌XML配置錯誤。
可參考以下操作排查:
如果是4.1.6及以上版本探針,可以開啟自動填滿traceId功能,查看是否能關聯TraceId,如果能,則確定是使用者日誌XML配置錯誤。
引入ARMS Java SDK,列印日誌時手動擷取TraceId,代碼如下所示。
Span span = Tracer.builder().getSpan(); //此處未建立新的Span。 String traceId = span.getTraceId(); logger.warn("traceId={} this is your log message", traceId)
如果能擷取到TraceId,則說明是使用者日誌XML配置錯誤。
如果上述兩種方式均驗證失敗,請提交工單。
部分日誌沒有關聯上TraceId:可能是日誌中沒有Trace上下文導致無法關聯TraceId。
通常列印日誌時是沒有Trace內容相關的,一般只有在一些請求入口中列印的日誌才有Trace上下文,例如在HTTP介面、RPC介面、定時任務、消費訊息等業務的處理代碼。
樣本情境:
應用在接收到一個HTTP請求之後,執行資料庫查詢,然後列印日誌,此時是有Trace內容相關的,日誌能成功關聯TraceId。
應用在接收到一個HTTP請求之後,通過線程池提交一個非同步任務執行資料庫查詢,然後列印日誌,此時,
對於3.x版本探針,因為不支援Trace上下文非同步自動透傳,非同步線程沒有Trace上下文,日誌無法成功關聯上TraceId。
對於4.x版本探針,因為支援Trace上下文非同步自動透傳,非同步線程有Trace上下文,日誌可以成功關聯上TraceId。
應用在啟動後,通過JDK的線程池,迴圈執行資料庫查詢,每次查詢後列印日誌,此時是沒有Trace內容相關的,日誌無法成功關聯上TraceId。
通過查看日誌列印的線程名字可以判斷具體情境。
下面舉例說明:
使用Tomcat作為Web容器時,一般以
http-nio-
開頭的線程名代表處理HTTP請求的線程,這種線程列印的日誌可以關聯上TraceId。使用Dubbo作為RPC架構時,一般以
DubboServerHandler-
開頭的線程名代表處理Dubbo請求的線程,這種線程列印的日誌可以關聯上TraceId。
其他架構類似,如果最終判斷出不是以上情境導致的日誌未關聯TraceId,請提交工單。
在調用鏈分析頁面跳轉查看的日誌為空白
排查步驟:
該應用的所有日誌是否都未關聯上TraceId,如果是,請參考修改日誌XML配置後日誌未成功關聯上TraceId問題排查;如果不是,執行下一步。
TraceId查詢不到日誌的介面如果是固定的一個或者幾個介面,則一般是該介面內部本身並未輸出日誌。
如果不是上述情況,請提交工單。
綁定好SLS的Project和Logstore之後,Logstore中沒有日誌
使用者需要自行按照SLS的接入文檔將應用日誌採集到Logstore中,ARMS並不會協助使用者自動將日誌採集到Logstore中。
網關應用日誌無法成功關聯TraceId,業務應用日誌可以成功關聯TraceId
3.x版本探針對於Spring Cloud Gateway埋點有缺陷,升級到4.x版本探針可解決該問題。
使用TraceCallable.wrap()封裝非同步任務後,任務中的日誌無法成功關聯TraceId
使用方式不對,建議直接升級到4.x版本探針,非同步情境無需任何代碼改造。
開啟自動填滿TraceId後未成功關聯上TraceId
一般存在以下兩種情況:
所有日誌都沒有關聯上TraceId:這種情況一般是該配置推送到探針失敗,請參考Java應用監控網路設定文檔檢查ACM服務端的連通性。
部分日誌沒有關聯上TraceId:請參考修改日誌XML配置後日誌未成功關聯上TraceId問題排查。