系統設計入門:Logging and Monitoring
Published in
May 8, 2022
我都刷卡了,為什麼還是不能用!? (((糟糕…又是哪邊有問題….
當系統使用者越來越多時,日常維運就變得越趨重要!
但日常維運又包含了哪些事? 可以有哪些措施?
Logging
指收集、儲存logs的過程,通常是一個集合了對debug有幫助的events資訊。常見的服務會把logs通通整進定義好的centralized logging solution。
- stdout(Standard Output): 輸出一般的資訊,程式跑什麼結果就秀什麼。
- stderr(Standard Error): 針對定義的錯誤訊息來秀(diagnostic, notice, warning, error等等)。
Monitoring
將系統重要的事件量化計算,並依據時間軸展開成折線圖。
例如,採用Prometheus對時序資料以時間維度來進行分析展示
如下圖,左半邊就是Logging;右半則是Monitoring。
The Four Golden Signals
監控歸監控,但實際上可以怎麼朝什麼方向去看?
- Latency: 代表request被執行的時間,並且在監控時,要去區分有成功/失敗的requests。
- Traffic: 用來衡量整個系統的需求量,以網頁(web)來說,就是計算每秒http的request數量;若是Key-Value的DB,就是每秒query次數等等。
- Errors: 確認錯誤的比率與錯誤原因,例如網頁上user看到error code=500或是明明是200,卻顯示出錯誤的網頁內容。
- Saturation: 重視系統硬體效能監控,如本身的CPU, RAM, disk,這些在I/O限制下,需要特別注意,通常在達到100%利用率之前,效能就會開始下降!
Alerting
透過設定重要監控指標不符合標準時,就發出通知告知系統管理者。常用的告警就如透過email, slack等等。