昨天聊到雲端服務可以管理很多伺服器
但我又突然想到一個問題
如果一個服務背後有幾百台、甚至幾千台伺服器,那工程師到底要怎麼知道每一台有沒有正常?
總不可能每天跑進資料中心
一台一台看吧?
所以今天就來看看,工程師到底是怎麼監控這些伺服器的?
一、工程師真的會一直盯著伺服器嗎?
如果真的要工程師坐在電腦前
一直盯著每一台伺服器的畫面
那應該不用多久就會瘋掉
所以實際上,工程師會使用一些監控系統
讓系統自己收集伺服器目前的狀況
例如
CPU 使用率
記憶體使用量
硬碟空間
網路流量
甚至還可以監控網站回應速度、錯誤數量等資訊
工程師不需要一直看著每一台伺服器
而是可以透過監控系統一次看到整體狀況
二、監控系統到底在看什麼?
可以想像成我們去醫院量身體數據
可能會看到體溫、心跳、血壓等等
伺服器也有很多可以觀察的數據
例如 CPU 使用率突然從 30% 變成 95%
可能代表目前工作量突然變大
記憶體使用量一直上升
可能代表某個程式出現問題
硬碟快要沒有空間
也可能影響系統正常運作
所以這些數據可以幫助工程師了解
現在系統到底發生了什麼事情
三、如果出問題,工程師怎麼知道?
這就是監控系統很重要的一個功能
它不只是把數據放在畫面上
還可以設定一些規則
例如
如果 CPU 使用率長時間超過某個數值
就發出警告
如果伺服器完全沒有回應
也發出警告
如果錯誤數量突然大量增加
同樣可以通知工程師
所以工程師可能在手機上突然收到一則通知
「某個服務出問題了」
這時候就可以開始查看到底發生什麼事情
四、那工程師收到通知後要做什麼?
收到警告不代表問題就解決了
工程師還需要找出原因
這時候就會用到另一個很常聽到的東西
Log,日誌
簡單來說
Log 就像系統留下來的「行為紀錄」
例如某個使用者登入
系統可能留下紀錄
某個 API 發生錯誤
也可能留下紀錄
某個服務突然停止
同樣可能留下相關資訊
所以當系統出問題時
工程師可以透過這些紀錄去追查
到底是哪一個環節出錯了
有點像我們手機突然壞掉
不是直接把手機丟掉
而是先想
「剛剛到底做了什麼?」
「什麼時候開始怪怪的?」
然後一步一步找原因
五、如果問題很嚴重怎麼辦?
大型服務通常不會只靠一個人處理所有問題
可能會有不同工程師負責不同的系統
也可能建立不同層級的警報
例如一般的小問題
可能先由系統自動處理
比較嚴重的問題
才需要通知工程師介入
甚至有些系統可以在偵測到問題後
自動重新啟動服務、增加資源或把流量轉移到其他正常的伺服器
這樣可以減少服務中斷的時間
所以現在的系統其實不只是
「壞掉 → 工程師才發現」
而是希望做到
「快要出問題 → 系統先發現 → 通知或自動處理」
六、原來我們看到的「網站掛掉」背後有這麼多事情
以前如果一個網站突然打不開
我大概只會想
喔,網站壞掉了
但今天才發現
一個網站從正常運作到真的「掛掉」
中間其實可能有很多可以被監控的訊號
CPU、記憶體、網路流量、錯誤數量、回應時間……
這些數據就像是系統的健康檢查
工程師可以透過它們了解
現在的系統到底健不健康
七、心得
今天才發現
原來工程師不是每天坐在資料中心裡
盯著一台一台伺服器看
而是透過監控系統、Log 和各種警報
遠端掌握整個系統的狀況
這也讓我開始覺得
以前看到網站突然卡住、App 打不開
好像只是「網路不好」
但其實背後可能牽涉到很多不同的原因
而工程師就是要從這些數據和紀錄裡
慢慢把真正的問題找出來
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
明日預告
今天知道工程師可以透過監控系統知道伺服器現在的狀況
但我又突然想到一個問題
如果工程師發現系統真的出問題了,那麼多台伺服器和服務,到底要怎麼快速找到是哪裡壞掉?
而且如果每個服務都互相連接
一個地方出問題,會不會連帶影響其他地方?
那明天就來討論一下
「一個系統到底是怎麼找到問題的?」