天天看點

分布式系統日志上下文查詢功能

随着技術的發展,越來越多的系統從單機轉向到分布式,同時對應的日志檢視方式除了直接檢視檔案外,也發展出了各種集中日志管理方式。其中常見日志檢視方式如下:

開發單機程式時診斷非常簡單:設定斷點,檢查斷點上下變量狀态即可。

當程式部署線上後,可以把斷點中内容以日志方式記錄下來。出現錯誤後,還原日志上下文(context)不難,隻要把日志檔案中前後n行拿到後都能容易找到問題

分布式系統日志上下文查詢功能

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

分布式系統日志上下文查詢功能

在分布式場景下(比如docker、lxc、多伺服器等),程序會同時跑在不同伺服器上,一般通過集中式日志管理(例如splunk、elk、日志服務)等查找定位日志。

分布式系統日志上下文查詢功能

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

今天日志服務(原sls)logsearch在查詢分析基礎上,提供了檢視上下文的按鈕,既可以在控制台上 完全精确 還原任意日志上下文(上下n條日志),并支援對指定内容(比如threadid)進行篩選,幫助你快速定位問題。整個過程如圖所示:

分布式系統日志上下文查詢功能

隻支援使用logtail用戶端收集的日志

指定日志庫(logstore)必須開啟索引功能

dev線上上通過關鍵詞查詢,定位到一個異常日志

分布式系統日志上下文查詢功能

點選上下文查詢後,既跳轉到前後n條上下文顯示框

可以通過“更早”、“更新”等按鈕加載更多上下文,也可以點選“傳回普通搜尋模式”進一步排查

通過篩選框篩選threadid,進行精準上下文的過濾

分布式系統日志上下文查詢功能

繼續閱讀