SpO₂:小巧的動態監控工具

SpO₂ 是血氧飽和度,用於醫療人員監控。
我是 Kerollmops,我是 Meili 的技術長,今天我要發布 SpO₂。
在 Meili,我們需要一個工具來監控我們的 pod,我們已經有 vigil 來檢查我們首頁和後端的健康狀況,但這些服務的數量是有限的。我們不會動態彈出新的前端或後端伺服器(目前)。當我們為使用者建立新的搜尋引擎時,我們會實例化一個 kubernetes pod,我們需要監控此服務的健康狀況。在 vigil 設定檔中手動新增每個 URL 並非解決方案。
因此我們決定需要一個簡單的工具,這個工具可以接受 HTTP 請求來註冊/取消註冊要進行健康檢查的 URL。我們使用 新的 async/await Rust 語法 以及 tide 來建立 http 伺服器,這裡沒有什麼特別的。
我們目前的雲端供應商是 Digital Ocean,因此,我們無法在那裡託管我們的 SpO₂ 服務。我們選擇 Scaleway,因為它更便宜,而且開箱即用。我們需要持久儲存健康檢查的 URL。如果這些 URL 僅儲存在 RAM 中,你會怎麼做?如果伺服器重新啟動會怎麼樣?我已經在 一個名為 Sled 的 Rust 磁碟支援鍵值儲存庫 上工作過了。因此我們選擇依賴它。
@qdequele 使用原生 JavaScript 建構了前端。使用 WebSocket,我們可以即時顯示 pod 狀態。由於大多數人不會整天站在電視機前,觀察顏色變化來通知開發維運,我們決定實作通知功能。我們所有的監控工具都使用 Slack,而且由於實作就像使用一個 webhook 一樣簡單,所以我們就採用它了。
在最新版本中,我們對 Slack 通知系統進行了一些改進。我們現在會將狀態變更事件分批處理 40 個;這表示 SpO₂ 會發送一則訊息,最多包含 40 個事件,並控制頻道的垃圾訊息。它也會顯示與不健康量測相關的 HTTP 狀態,以及無法連線時的錯誤訊息。
SpO₂ 本身不支援 SSL/TLS,無論是 HTTP 或 WebSocket 端點。我們需要這種安全性,因此我們研究了 NGINX,這是一個小而不起眼的反向 Proxy 伺服器,我們使用基本驗證對其進行了設定。這不是一件容易的事,而且因為我們很酷,所以我們編寫了文件來幫助您也這樣做。
請隨時分享或為這個專案加星號,歡迎提交 Pull Request 😊
順帶一提,我們實際上測量的不是人類,而是機器。