這兩個詞常被混用,但思維模式根本不同。監控回答「我事先想到的那些問題,現在有沒有發生?」;可觀測性回答「系統現在到底怎麼了、為什麼會這樣?」——即便那是你從沒預想過的故障。監控是可觀測性的子集,不是它的同義詞。
🧠 Intuition
TIP
判斷系統是否具備可觀測性的簡單標準:當一個你從未見過的問題發生時,你能不能在不部署新程式碼的情況下找出根因?可以,你的系統就是可觀測的。
- 監控(Monitoring)=已知的未知:你預先定義要看的指標與告警條件,超過閾值就通知。它只能照亮你「事先想得到」的問題。
- 可觀測性(Observability)=未知的未知:不預設會出什麼問題,而是讓系統吐出夠豐富的遙測,讓你在問題發生後自由探索、追查。
- 這個詞源自 1960 年代匈牙利數學家 Rudolf Kálmán 的控制理論——一個系統「可觀測」,意味著僅憑觀察它的外部輸出,就能推論內部狀態。搬到軟體上就是:不改動系統,只靠它產生的遙測資料理解其行為。
- 為什麼今天特別需要它:單體時代 SSH 進機器翻 log 就能解決;到了數十上百個微服務、容器隨時生滅、持續部署頻繁引入變更,「進去看」根本行不通。
⚖️ Tradeoffs
只有監控 — 對付得了「已知的未知」
- 你預先決定要量什麼、對什麼告警,回答早就想得到要問的問題(容量、健康總覽、SLO 追蹤)。
- 好處:便宜、直覺、告警成熟;大多數穩態問題這樣就夠。
- 盲點:面對從未預料的故障模式束手無策——因為你沒事先埋那個問題的告警,事後也翻不出足夠脈絡。
追求可觀測性 — 才能問「沒預設過的問題」
- 讓系統產生足夠豐富的遙測(結構化、帶脈絡),事後能自由切片、追因果。
- 好處:面對 unknown-unknowns 仍能在不改程式碼的前提下逼近根因;監控自然成為它的子集。
- 代價:需要在 instrumentation、資料處理與儲存上投資;處理階段最容易被忽略卻最影響成本——原始資料不過濾直接塞進儲存,既浪費空間又拖慢查詢。
🔑 Takeaways
- 監控答「我想到的問題發生了嗎」(known-unknowns);可觀測性答「系統怎麼了、為什麼」(unknown-unknowns)。監控是可觀測性的子集。
- 概念源自控制理論:僅憑外部輸出推論內部狀態;軟體版=不改系統、靠遙測理解行為。
- 微服務、容器、持續部署讓「進機器看」失效,逼出可觀測性;投資重點別漏了成本槓桿最大的「資料處理」環節。
No notes yet — jot your takeaways or Q&A here.