Monitoring vs Observability
這篇文章 討論關於 “Monitoring vs Observability” 的差異。
Updated 2023/07/19: 本文部分收錄在個人著作 《SRE 實踐與開發平台指南》 - 2023/08 上市
Observability 我把他想成是科學方法的 量測 (Measurement)
』,也就是健康檢查報告上的指標定義以及數據蒐集。健康檢查報告上的各項『指標』不是憑空捏造出來,而是透過各種實驗方法、理論分析,最後定義出數據與單位,反映出人體『健康』與否的依據。
系統的角度就是經過量測的數據與單位,才能被作為分析、決策用途,產生監控行為,也就是 Monitor、Alert、後續的自動化等。
量測的方法最簡單就是取樣 (Sampling),例如我在 淺談系統監控與 CloudWatch 的應用 提到 nginx connection
的 metric,資料來源就是透過另外開發的程式,定期取樣系統資料,例如每十秒採樣一次,最後統計出指標的圖表資訊,類似的還有系統的開檔數目 (ulimit)。
每一種應用程式都會有不同的指標,每種指標都要透過方法或者工具取樣,這個過程叫做 Observability
,之後根據這些資訊所做的動作,都叫做 Monitoring
or Controller
。
Observability in DevOps
我覺得系統就是要先量測 (Observe),就像是要知道一個人是否健康,健康報告要知道有哪一些指標。找指標是要透過科學方法與實驗的,是需要專業器材與工具量出數據、單位。系統要找出這些東西,從 Log、或 Sampling 產生。
有這些東西,才有所謂 Monitor
-> 根據數據講故事,或者做判斷,這個判斷的動作叫做 Alert
。有數據可以透過方法論 (ML/AI) 作出分析、甚至是決策,最後才會有 Actions ,也就是控制 (Controller)。
所以後來在 Ops 的 Pipeline 理,我都改用 Observability。
註:英文用詞後來從 Observation 改用 Observability or Observing
Amazon CloudWatch - Observability and Monitoring
這是我在做 CloudWatch 教育訓練時整理的 Slide,技術就是以 CloudWatch 為主,本質性就是在討論『監、控』
延伸閱讀
- 淺談系統監控與 CloudWatch 的應用 - AWS User Group Taiwan
- Software Development Lifecycle
- Resource Provisioning and DevOps
- 什麼是『監控』? (What is monitoring )
- Ops as Code using Serverless
- 個人著作《SRE 實踐與開發平台指南》 (2023/08 上市)
參考資料
- Monitoring in the time of Cloud Native
- Monitoring and Observability
- A History of Site Reliability Engineering at Uber
- Observability and Monitoring Best Practices