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


使用SLS在雲端快速精確定位應用錯誤

作者: 阿裏雲技術團隊  孫廷韜

作為一個程序猿,調查應用錯誤可真不是一個輕鬆活,一出問題,經常要上機器查看各種日誌,對於複雜應用,這個過程就更痛苦。比如,應用前端架設Apache服務,後端是各種核心邏輯,使用Mysql做信息存儲,這些角色還部署在多台機器上。調查問題,免不了打開多個機器的登錄窗口,在不同目錄間切換,grep日誌關鍵詞查找線索,再切換再查找,幾圈下來,頭已經有點暈,打開日誌文件看看細節,一失手,vim一個上百MB文件…心中已是各種馬在奔騰…

自從用上了阿裏雲的簡單日誌服務,突然發現調查問題變得輕鬆起來。向各位看官匯報一下,如何在雲端,快速定位應用各種錯誤。

 首先,先來看前端機器是否有錯誤,自從將前端訪問日誌收集放到SLS上後,再不用一台台登錄前端機。選擇Apache訪問日誌的Category,直接在控製台輸入 “500”,就可查看http 狀態為500的錯誤日誌。真有幾次這樣的錯誤,這些訪問請求失敗了。

 圖1

 趕緊去看看後端應用層,是什麼異常導致的,返回category列表,重新選擇後端日誌”ServerLog”這個Category,輸入” ERROR”,把所有ERROR級別的日誌全部查出來。

 圖2

這麼多錯誤,真要好好看看都是怎麼回事。想到核心業務部署在10.242.78.62這個機器上,重點關注這個機器上有沒有什麼錯誤,輸入”ERROR and 10.242.78.62”進行精確定位。

 圖3

 還好,錯誤數下降了一個數量級。在顯示的第一頁日誌上,看上去都是用戶輸入參數錯誤,包含了非utf-8字符。往後翻了幾頁,也是同樣的錯誤,那先把這些參數錯誤過濾掉再說,輸入 “ERROR and 10.242.78.62 not UTF-8” 進行過濾。

 圖4

世界立馬清淨了,隻有幾個錯誤,原來都是寫數據庫出現錯誤,仔細回想一下,原來前2天修改了數據庫表的schema,應用程序處還有一個地方忘記修改,由於這個表平時訪問少,這個問題一直沒有被發現。快速定位到原因後,這個bug的修複分分鍾就搞定。 

   

有了簡單日誌服務,調查問題,可以直接在雲端完成,免去了登錄機器的煩惱,通過簡單日誌服務提供的自定義時間段,以及關鍵詞 AND、NOT、OR的組合查,可以方便地定位各種異常信息,大大提高了本碼農的debug的效率。

最後更新:2017-04-03 05:38:55

  上一篇:go gcc如何生成預編譯頭文件(.gch)
  下一篇:go activty棧管理