UStackUStack
FerrisPulse icon

FerrisPulse

FerrisPulse 監控背景工作心跳「ping」,偵測 cron/佇列/備份預期執行停止就發出 down 警報並於恢復後寄回復信。

FerrisPulse

FerrisPulse 是什麼?

FerrisPulse 是一款用於背景工作與排程自動化的心跳監控服務。它不會檢查應用程式是否回應 HTTP 請求,而是期待來自 cron 工作、佇列處理器、備份及其他腳本的成功「ping」。

若下一個預期心跳未在設定的間隔內到達,FerrisPulse 就會發出 down 警報,並在 ping 恢復時自動寄出回復信。目的是將「靜默失敗」(工作停止執行,但系統其他部分看似正常)轉化為可見事件,並提供事件時間軸。

主要功能

  • 預期工作間隔的心跳監控:FerrisPulse 依據排程(例如每小時或每晚)監控成功 ping 的到達,並將遺漏 ping 視為 down 狀態。
  • 每個監控器的成功 ping URL:複製專屬監控器的 ping URL,並僅在工作成功完成後透過 HTTP POST 呼叫,讓「心跳」反映已完成的工作。
  • Down 警報與回復信:心跳遺漏時發送一次 down 警報;下一個 ping 到達時發送回復信並關閉事件。
  • 事件時間軸與心跳歷史:儀表板顯示狀態、心跳歷史與事件視窗,而無需從日誌重建失敗情形。
  • 可設定間隔與寬限期:監控器包含預期間隔,並可加入寬限期以因應執行時間變異。

如何使用 FerrisPulse

  1. 為欲追蹤的工作建立監控器,設定預期間隔(cadence),並視需要加入寬限期。
  2. 複製監控器的 ping URL。
  3. 在自動化流程中,僅在工作成功完成後發送 HTTP POST 至 ping URL。
  4. 讓 FerrisPulse 持續運行;它會偵測遺漏心跳、發送 down 警報,並在 ping 恢復時寄出回復信。

使用情境

  • 應每小時執行的 cron 工作:設定每小時監控器,並在腳本完成後 ping URL。若腳本靜默停止數小時,FerrisPulse 會發送 down 警報,包含預期間隔與儀表板連結。
  • 備份快照驗證:針對每晚備份,設定每日監控器,並僅在備份成功完成後發送 ping。這有助捕捉備份流程停滯的情形,而不會觸發更廣泛的應用程式正常運作警報。
  • 佇列處理器健康(完成工作,而非僅伺服器健康):使用佇列處理器時,在處理完成後發送成功 ping。FerrisPulse 可在預期成功工作間隔停止時發出警報。
  • 排程 ETL/報表流程:針對每小時或每日帳單同步或報表,在工作流程結束時 ping。FerrisPulse 會記錄事件時間軸,讓遺漏執行成為可追蹤事件。
  • 由排程基礎設施觸發的自動化腳本:無論排程為內部或外部,流程相同—腳本成功完成後發送 ping,讓 FerrisPulse 偵測靜默狀態。

常見問題

如何通知 FerrisPulse 工作已執行?

在工作成功完成後,呼叫專屬監控器的 HTTP POST ping URL。FerrisPulse 期待依設定間隔的 ping。

什麼情況會觸發警報?

當下一個預期心跳/ping 未依監控間隔到達時觸發警報(支援寬限期)。

FerrisPulse 會在事件期間重複發出警報嗎?

頁面描述每個事件僅發送一次 down 警報,並在 ping 返回時發送獨立的回復信,避免重複警報風暴。

哪裡能看到發生了什麼?

FerrisPulse 提供儀表板檢視,包含狀態、心跳歷史、事件視窗與警報行為,一覽無遺。

支援哪些工作系統?

網站指出可與 cron、systemd 定時器,以及 BullMQ、Sidekiq、Celery、GitHub Actions 等工作/排程器生態系搭配使用,加上 Bash、Node.js、Python、Ruby 等語言/環境。

替代方案

  • 正常運行時間/健康檢查監控 (HTTP 端點檢查):適合應用程式可用性,但可能遺漏「靜默失敗」,即網頁伺服器正常運作時背景工作 (cron/佇列/備份) 未執行。
  • 基於日誌的警示:警示可由錯誤訊息觸發,但仍需主動檢查日誌,且無法像心跳般直接偵測遺漏執行。
  • 工作排程器通知 (內建 cron/systemd/GitHub Actions 警示):某些環境可於失敗時通知,但流程不同,因為 FerrisPulse 聚焦明確成功 ping 並監控預期頻率。
  • 聚焦積壓/吞吐量的佇列監控工具:這些追蹤工作者與佇列行為,但 FerrisPulse 專門監控工作完成時的成功心跳存在。
FerrisPulse | UStack