UStackUStack
FerrisPulse icon

FerrisPulse

FerrisPulseはcron/キュー/バックアップ等のジョブ失敗を検知するハートビート監視。停止時はダウン通知、再開時は復旧メール。

FerrisPulse

FerrisPulseとは?

FerrisPulseはバックグラウンドジョブとスケジュール自動化のためのハートビート監視サービスです。HTTPリクエストへの応答確認ではなく、cronジョブ、キューワーカー、バックアップ、その他のスクリプトからの成功「ping」を期待します。

次の期待されるハートビートが設定された間隔内に到着しない場合、FerrisPulseはダウンアラートを送信し、pingが再開すると自動的に復旧メールを送信します。目的は「silent failure」(システムの他部分が正常に見えてもジョブが停止する状態)を、インシデントタイムライン付きの可視化されたインシデントに変えることです。

主な機能

  • 期待ジョブ間隔のハートビート監視:FerrisPulseはスケジュール(例:毎時または毎晩)での成功pingの到着を監視し、欠落をダウン状態として扱います。
  • モニターごとの成功ping URL:モニター固有のping URLをコピーし、ジョブが成功終了後にのみHTTP POSTで呼び出します。これにより「ハートビート」が完了作業を反映します。
  • ダウンアラート+復旧メール:ハートビート欠落時に1回のダウンアラートを送信し、次のping到着時に復旧メールを送信してインシデントをクローズします。
  • インシデントタイムラインとハートビート履歴:ダッシュボードでステータス、ハートビート履歴、インシデントウィンドウを表示し、ログからの失敗再構築を不要にします。
  • 設定可能間隔と猶予期間対応:モニターに期待間隔を設定でき、実行時間変動に対応する猶予期間を追加可能です。

FerrisPulseの使い方

  1. 追跡したいジョブのモニターを作成し、期待間隔(cadence)を設定、必要に応じて猶予期間を追加。
  2. モニターのping URLをコピー。
  3. 自動化スクリプトで、ジョブ成功後にping URLへHTTP POSTを送信。
  4. FerrisPulseを稼働させたままに:欠落ハートビートを検知し、ダウンアラートを送信、ping再開時に復旧メールを送信します。

ユースケース

  • 毎時実行のcronジョブ:毎時モニターを設定し、スクリプト終了後にURLをping。スクリプトが数時間静かに停止したら、期待間隔とダッシュボードリンク付きのダウンアラートを送信。
  • バックアップスナップショット検証:毎晩バックアップの場合、毎日モニターを設定し、バックアップ成功後にpingを発信。バックアップパイプラインの停滞を、アプリ全体のアップタイムアラームなしで検知。
  • キューワーカー健全性(完了作業、サーバー健全性ではない):キューワーカー使用時、処理完了後に成功pingを送信。期待cadenceの成功作業停止時にアラート。
  • スケジュールETL/レポートパイプライン:毎時/毎日の請求同期やレポートの場合、ワークフロー終了時にping。FerrisPulseがインシデントタイムラインを維持し、欠落実行を追跡可能に。
  • スケジュールインフラでトリガーされる自動化スクリプト:スケジュールが内部/外部問わず、同一ワークフロー—スクリプト成功後にpingを送信し、FerrisPulseが静寂を検知。

FAQ

ジョブ実行をFerrisPulseに通知する方法は?

ジョブ成功後にモニター固有のHTTP POST ping URLを呼び出します。FerrisPulseは設定cadenceでのpingを期待します。

アラートは何がトリガー?

監視cadence(猶予期間対応)までに次の期待ハートビート/pingが到着しない場合にアラートが発生します。

インシデント中にFerrisPulseは繰り返しアラートを送る?

1インシデントにつき1回のダウンアラートと、ping復帰時の別復旧メールを記述し、重複アラートストームを回避します。

何が起きたかをどこで見る?

FerrisPulseのダッシュボードビューで、ステータス、ハートビート履歴、インシデントウィンドウ、アラート挙動を一元表示。

どのジョブシステムに対応?

cron、systemdタイマー、BullMQ、Sidekiq、Celery、GitHub Actionsなどのワーカー/スケジューラーエコシステム、Bash、Node.js、Python、Rubyなどの言語/環境で使用可能と記載。

代替案

  • 稼働率/ヘルスチェック監視(HTTPエンドポイントチェック):アプリの可用性に有用ですが、Webサーバーは正常でもバックグラウンドジョブ(cron/キュー/バックアップ)が実行されていない「サイレントフェイラー」を検知できない場合があります。
  • ログベースのアラート:エラーメッセージで事後的にアラートをトリガーできますが、ログの積極的な確認が必要で、ハートビートほど直接的に欠落実行を検知しません。
  • ジョブスケジューラ通知(ビルトインcron/systemd/GitHub Actionsアラート):一部環境で障害通知が可能ですが、FerrisPulseは明示的な成功ピンを中心に期待間隔を監視するためワークフローが異なります。
  • バックログ/スループットに特化したキュー監視ツール:ワーカーとキューの挙動を追跡しますが、FerrisPulseは作業完了時の成功ハートビートの存在を具体的に監視します。
FerrisPulse | UStack