系統設計入門:Logging and Monitoring

ChunJen Wang
jimmy-wang
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。

普羅米修斯示意圖 source: https://www.balena.io/blog/monitoring-the-edge-with-prometheus-pt-1/

The Four Golden Signals

監控歸監控,但實際上可以怎麼朝什麼方向去看?

  1. Latency: 代表request被執行的時間,並且在監控時,要去區分有成功/失敗的requests。
  2. Traffic: 用來衡量整個系統的需求量,以網頁(web)來說,就是計算每秒http的request數量;若是Key-Value的DB,就是每秒query次數等等。
  3. Errors: 確認錯誤的比率與錯誤原因,例如網頁上user看到error code=500或是明明是200,卻顯示出錯誤的網頁內容。
  4. Saturation: 重視系統硬體效能監控,如本身的CPU, RAM, disk,這些在I/O限制下,需要特別注意,通常在達到100%利用率之前,效能就會開始下降!

Alerting

透過設定重要監控指標不符合標準時,就發出通知告知系統管理者。常用的告警就如透過email, slack等等。

--

--

ChunJen Wang
jimmy-wang

嗨,歡迎你的到來,我目前在銀行擔任DS。過去曾做過銀行大型專案BA,也曾在轉職科技業DE中踢了鐵板,相信每一個人都有自己要走的路,而努力的過程,可以讓我們離心中理想更接近,如果我的文章能帶給你一些啟發與幫助,別忘了幫我在文章底下按下拍手~^^