Healthchecks.io 的 ping 端點接受 HTTP HEAD、GET 和 POST 請求方法。使用 HTTP POST 時,客戶端可以在請求主體中包含任意的資料負載。Healthchecks.io 會儲存請求主體的前 100kB。如果請求主體很小,Healthchecks.io 會將其儲存在 PostgreSQL 資料庫中。否則,它會將其儲存在 S3 相容的物件儲存中。我們最近從託管的物件儲存遷移到了自託管的物件儲存。我們的 S3 API 現在由 Versity S3 Gateway 提供服務,並由簡單的 Btrfs 檔案系統支援。

在 2022 年,當我們實施將 ping 請求主體卸載到物件儲存時,我正在評估要使用哪個物件儲存提供商。

AWS S3 採用按請求計費,這對於 Healthchecks.io 的使用模式(頻繁的 PutObject S3 操作,每次足夠大的 ping 請求都進行一次操作)來說會比較昂貴。此外,由於 AWS 受制於 CLOUD Act,Healthchecks.io 需要在將資料交給 AWS 之前進行加密,這會增加複雜性。

OVHcloud 是我最初的選擇。它沒有按請求收費,OVHcloud 是一家歐盟公司,效能看起來也不錯。不幸的是,隨著時間的推移,我看到了越來越多的效能和可靠性問題。隨著我的體驗越來越糟,我開始尋找替代方案。

在 2024 年,我遷移到了 UpCloud。與 OVHcloud 相同,它沒有按請求收費,也是一家歐盟公司。服務品質有明顯的提升:S3 操作更快,伺服器錯誤或超時更少。不幸的是,隨著時間的推移,UpCloud 物件儲存的效能也開始下降。有時所有操作都會變得緩慢並達到我們的超時限制。特別是 S3 DeleteObjects 操作隨著時間的推移變得越來越慢。所以我再次尋找替代方案,包括自託管。

我們目前的(2026 年 4 月)物件儲存使用量為:

我們的候選物件儲存系統需要能夠支援此使用量並有成長空間。幸運的是,我們仍處於可以輕鬆容納在單一系統上的規模,並且像進行完整備份這樣的操作可以相對快速地完成。如果我們有數 TB 的需求,一切都會變得更加複雜。

可用性和耐用性:對於 Healthchecks.io 的用例,物件儲存不像我們的主要資料儲存 PostgreSQL 資料庫那樣是任務關鍵的。如果資料庫崩潰,服務將完全中斷,監控警報將停止發送。如果物件儲存崩潰,用戶將無法通過網頁介面或 API 檢查 ping 主體,但系統Otherwise 仍可正常運行。如果某些 ping 主體永久丟失,那很糟糕,但不如丟失任何進入 PostgreSQL 資料庫的資料那麼糟糕。

延遲:越快越好。在 Healthchecks.io 的程式碼中有一些地方會在 HTTP 請求/響應週期中執行 S3 操作。單個 S3 操作花費數秒鐘可能會導致 Web 伺服器進程阻塞。在使用 UpCloud 時,我不得不添加一些負載削減邏輯,以防止緩慢的 S3 操作升級為更大的問題。

我對 Minio、SeaweedFS 和 Garage 進行了本地實驗。我對它們的主要反對意見是操作複雜性。按照「入門」說明並啟動一個基本的集群並不難。但是,對於生產就緒的設置,我至少需要:

由於我是一個人的團隊,並且我已經自託管了 Postgres、自託管的 HAProxy 負載平衡器和自託管的電子郵件,我真的很想避免承擔運行另一個非瑣碎系統的責任。我更喜歡簡單的東西。

Versity S3 Gateway 將您的本地檔案系統變成一個 S3 伺服器。S3 PutObject 操作會在檔案系統上創建一個常規文件,S3 GetObject 操作會從檔案系統讀取一個常規文件,S3 DeleteObject 操作會從檔案系統刪除一個文件。它不需要單獨的資料庫來儲存元數據。您可以使用任何備份工具進行備份。升級過程是:替換單個二進制文件並重新啟動 systemd 服務。它用 Go 編寫,並且正在積極開發中。我發現並報告的一個錯誤在幾天內就得到了修復。

Versity S3 Gateway 和以檔案系統作為後端儲存的明顯的缺點是可用性和耐用性。物件儲存在單一系統上,該系統可能隨時發生故障而沒有任何預警。我需要為這種情況做好準備。

在 2026 年 3 月,我遷移到了由 Versity S3 Gateway 支援的自託管物件儲存。

使用此設置,如果物件儲存伺服器上的兩個硬碟同時發生故障,系統可能會丟失最多 2 小時尚未備份的 ping 請求主體。這可以像往常一樣通過額外的複雜性來改進。

切換到自託管物件儲存後,S3 操作延遲下降了:

等待上傳到物件儲存的 ping 主體佇列縮小了:

目前尚未出現可用性問題,但新系統上線僅幾週時間。

我們的資料子處理器列表現在少了一個條目。

成本有所增加:租用額外的專用伺服器比在託管物件儲存服務中儲存約 100GB 的成本更高。但提升的效能和可靠性是值得的。

我對新系統持謹慎樂觀的態度,並認為它比舊系統有所改進。但如果我找到一個權衡取捨更好的系統,我也會樂於再次遷移。

感謝閱讀,祝您監控愉快,– Peteris

Healthchecks.io 是一項免費開源的 cron 作業監控服務。設定 cron 作業監控只需幾分鐘。開始睡個好覺吧!