閱讀25 返回首頁    go 阿裏雲 go 技術社區[雲棲]


分布式係統日誌上下文查詢功能

日誌查看方式

隨著技術的發展,越來越多的係統從單機轉向到分布式,同時對應的日誌查看方式除了直接查看文件外,也發展出了各種集中日誌管理方式。其中常見日誌查看方式如下:

單線程程序

開發單機程序時診斷非常簡單:設置斷點,檢查斷點上下變量狀態即可。
當程序部署線上後,可以把斷點中內容以日誌方式記錄下來。出現錯誤後,還原日誌上下文(Context)不難,隻要把日誌文件中前後N行拿到後都能容易找到問題

DingTalk20170609201400.png

多線程程序

當多線程出現後,還原上下文變得複雜一些,因為不同線程打日誌順序會造成一定幹擾。我們可以在日誌中記錄、篩選線程(ThreadID)來排除其他線程幹擾,拿到上下文

DingTalk20170609201456.png

分布式係統

在分布式場景下(比如Docker、LXC、多服務器等),進程會同時跑在不同服務器上,一般通過集中式日誌管理(例如Splunk、ELK、日誌服務)等查找定位日誌。

DingTalk20170609201628.png

這種場景下查找日誌非常方便(例如通過"Level:Error","Latency>100000 & Method:HandleRequest"等能對上億日誌進行快速查找),但定位到關鍵日誌後還原上下文卻變得很難。因為日誌采集、索引都是無序的,為了還原上下文,必須通過時間、機器、線程號來篩選和查找(這種方法一般不夠精確),業界並沒有好的方法。

日誌上下文查看

今天日誌服務(原SLS)LogSearch在查詢分析基礎上,提供了查看上下文的按鈕,既可以在控製台上 完全精確 還原任意日誌上下文(上下N條日誌),並支持對指定內容(比如ThreadId)進行篩選,幫助你快速定位問題。整個過程如圖所示:

DingTalk20170609202622.png

使用依賴

  • 隻支持使用Logtail客戶端收集的日誌
  • 指定日誌庫(Logstore)必須開啟索引功能

實際場景

  • Dev在線上通過關鍵詞查詢,定位到一個異常日誌

DingTalk20170612104019.png

  • 點擊上下文查詢後,既跳轉到前後N條上下文顯示框
    • 可以通過“更早”、“更新”等按鈕加載更多上下文,也可以點擊“返回普通搜索模式”進一步排查
    • 通過篩選框篩選ThreadID,進行精準上下文的過濾

DingTalk20170609203658.png

最後更新:2017-06-12 12:31:39

  上一篇:go  奧克斯天貓618首日破億,有態度的國貨空調說這是新常態
  下一篇:go  掃地機器人天貓618鏖戰,這個國貨品牌說自己最懂消費者