全部產品
Search
文件中心

Simple Log Service:查詢剖析器日誌

更新時間:Jun 30, 2024

本文通過查詢、關聯分析、統計分析等情境介紹如何使用Log Service對程式日誌進行查詢和分析。

背景資訊

程式日誌內容全、存在一定共性,它是營運程式的重要訊息,但程式日誌具有如下不便於儲存與分析的特性:

  • 格式隨意:不同開發人員的代碼風格不同,對應的日誌風格也不同,難以統一。

  • 資料量大:程式日誌一般比訪問日誌大1個數量級。

  • 分布的伺服器多:大部分應用為無狀態模式,運行在不同架構中,例如雲端服務器、Container Service等,對應的執行個體數從幾個到數千個,需要有一種跨伺服器的日誌採集方案。

  • 運行環境複雜:程式運行在不同的環境中,產生的日誌也儲存在不同的環境中,例如應用相關的日誌在容器中、API相關日誌在FunctionCompute中、舊系統日誌在本地IDC中、移動端相關日誌在使用者處、網頁端日誌在瀏覽器中等。

為了能夠獲得全量日誌,必須把所有日誌統一儲存。針對該情境,Log Service提供多樣化的日誌採集方式及一站式分析功能,您可通過查詢+SQL92文法對日誌進行即時分析,並以圖表形式直觀展示分析結果。和開源方案對比,Log Service提供的解決方案在查詢分析成本上僅是開源方案的25%。

查詢程式日誌

例如某App出現訂單錯誤或請求延時等問題,您可以通過查詢語句在TB級資料量的日誌中快速(1s內)定位問題。還可以根據業務需求,設定時間範圍、查詢關鍵字等資訊,更精準地返回查詢結果。

  • 查詢延時大於1s,並且要求方法是以Post開頭的請求資料。

    Latency > 1000000 and Method=Post*
  • 尋找包含error關鍵詞但不包含merge關鍵詞的日誌。

    error not merge

關聯剖析器日誌

關聯分析包括進程內關聯與跨進程關聯,區別如下:

  • 進程內關聯:一般比較簡單,因為同一個進程前後日誌都在一個檔案中。在多線程環節中,只需根據線程ID進行過濾即可。

  • 跨進程關聯:跨進程的請求一般沒有明確線索,一般通過RPC中傳入的TracerId來進行關聯。

  • 進程內關聯

    通過上下文查詢查看關聯日誌。例如通過關鍵詞查詢定位到一個異常日誌,然後單擊上下文瀏覽,查看該日誌前後N條日誌,操作步驟請參見上下文查詢上下文瀏覽

    上下文查詢結果如下所示:上下文關聯

  • 跨進程關聯

    跨進程關聯也叫Tracing,比較常見的工具有鷹眼、Dapper、StackDriver Trace、Zipkin、Appdash、X-ray等。

    此處基於Log Service,實現基本的Tracing功能。您可以在各模組日誌中輸出Request_id、OrderId等可以關聯的標示欄位,通過在不同的日誌庫中尋找,擷取所有相關日誌。關聯日誌

    例如通過SDK查詢前端機、後端機、支付系統、訂單系統等日誌。獲得結果後,製作一個前端頁面將跨進程分析關聯起來,如下圖所示。Tracing系統

統計剖析器日誌

查詢到日誌後,您還可以做進一步統計分析。

執行如下查詢分析語句,統計所有錯誤發生的類型和位置的分布。

__level__:error | select __file__, __line__, count(*) as c group by __file__, __line__ order by c desc

錯誤類型和位置

相關操作

  • 備份日誌

    將記錄備份至OSS、MaxCompute等產品中。

  • 關鍵詞警示

    通過CloudMonitor警示

  • 日誌查詢許可權分配管理

    可以通過RAM使用者授權方法隔離開發、PE等許可權。