在系統中日誌大體可以分為兩類,一類是流水日誌,另一類是錯誤日誌,對於前一類由於在業務上會有需求,所以設計系統時一般都會考慮,但關於錯誤記錄內容很多情況下都不會納入設計範圍,這樣導致我們開發出來的系統可維護性很差,錯誤日誌幾乎沒有參考**,甚至誤導維護人員。怎樣才能輸出良好的日誌資訊呢?我想可以從下面幾點入手。
1.分清錯誤日誌的級別
大家都知道錯誤日誌是分級別的,下面是一些常見的分級與定義。
設計這些日誌級別是為了方便的對日誌進行過濾,如在系統正常運轉狀態下一般會將日誌級別設定為warn,這樣當有錯誤日誌時,維護人員會要去關注並分析原因,在查詢具體問題時,可能要將日誌級別調到debug,希望通過更多的輸出資訊來定位問題。基本上從debug到emerg日誌量應該是遞減的。我見過有個系統的日誌只輸出在debug級別,這樣導致在系統執行時只能關閉日誌,由於日誌量輸出太大,無法根據日誌迅速判斷問題,另一方面頻繁的寫磁碟也帶來效能問題。
2.規範錯誤日誌輸出內容
在錯誤發生時,我們需要考慮輸出什麼內容,其實這個有個很簡單的原則,那就是根據檢視日誌者的需求,檢視日誌主要是維護與開發人員,emerg,alert,crit,error,warn這些級別的主要檢視者是維護人員,資訊的內容要簡明扼要,方便運維人員迅速判斷並採取措施;notice,info,debug這些級別的主要檢視者是開發人員,要提供足夠詳細且與系統實現邏輯相關的資訊,開發人員可以依據來定位**及資料問題。如果你將堆疊資訊輸出在crit級別就很不合適,因為這個是給開發人員看的。如果發生了乙個warn級別的錯誤,建議在warn,notice,info,debug級各輸出一條相應的資訊。
什麼是可靠 可擴充套件 可維護的系統?
一,可靠性的挑戰 1,人為故障是線上系統故障的首要原因,應該怎麼避免 1.1簡化設計,易於測試 1.2充分測試,覆蓋場景 1.3快速回滾,降低損失 1.4完善監控 1.5規範流程,這點最重要 2,軟體故障 2.1簡單架構,降低複雜度帶來的不可控 2.2選擇穩定的軟體,包括開源 2.3要有自動恢復機制...
SRE之道 創造軟體系統來維護系統執行
引言 本文作者ben treynor sloss,google 運維團隊的高階副總裁,sre 名稱的發明者,在這裡提供了他對sre 的定義。本文選自 sre google運維解密 大家都知道,計算機軟體系統離開人通常是無法自主執行的。那麼,究竟應該如何去運維乙個日趨複雜的大型分布式計算系統呢?僱傭系...
SRE之道 創造軟體系統來維護系統執行
引言 本文作者ben treynor sloss,google 運維團隊的高階副總裁,sre 名稱的發明者,在這裡提供了他對sre 的定義。本文選自 sre google運維解密 大家都知道,計算機軟體系統離開人通常是無法自主執行的。那麼,究竟應該如何去運維乙個日趨複雜的大型分布式計算系統呢?僱傭系...