第34回: Queue監視とアラート設計 — 失敗件数だけ見ていて大丈夫ですか?

章: 第8章: パフォーマンスと本番運用実践

ジョブが滞留していることに、いつ気づきますか?

Queue の失敗件数がゼロでも、処理が遅延していればユーザーへの影響は出ています。メール送信が1時間遅れる、決済処理が詰まっている——こうした「静かな障害」は失敗件数の監視だけでは検出できません。

遅延時間・失敗率・再試行回数の3点を定点観測することが、Queue運用の品質を保つ鍵です。

問題の本質と解決策

問題: 失敗件数のみを監視すると、ジョブが滞留して遅延が増加していても検出が遅れます。再試行が繰り返されている状態も「失敗」としてカウントされないことがあります。

解決策: Queue のラグ(遅延秒数)と失敗件数を組み合わせた閾値でアラートを設定します。Slack などの通知チャネルに自動送信することで、問題の早期検出が可能になります。

監視なし vs 監視あり 比較

観点 監視なし 遅延+失敗の複合監視
滞留の検出 ユーザー報告で気づく ラグ閾値超過で自動検出
失敗の検出 手動でログ確認 失敗件数閾値でアラート
再試行ループ 気づかずに放置 再試行回数で検出
対応までの時間 遅い(報告依存) 速い(自動通知)

チェックポイント: Queue の監視にラグ(遅延秒数)の閾値は設定されていますか?失敗件数だけでなくラグ監視を追加することで、「遅いが失敗していない」状態も検出できます。

実装サンプル


<?php
if ($failedJobs > 10 || $queueLagSeconds > 120) {
    Notification::route('slack', config('services.slack.webhook'))
        ->notify(new QueueAlertNotification($failedJobs, $queueLagSeconds));
}

まとめ & 次のステップ

  • Queue監視は遅延時間・失敗件数・再試行回数の3指標をセットで見ます
  • 失敗件数がゼロでも遅延増加は障害の予兆になります
  • 閾値は最初低めに設定し、誤検知を調整しながら適切な値に近づけます
  • Laravel Horizon を使うと Queue 監視ダッシュボードが簡単に構築できます
  • まずはラグ監視1つをSlack通知に連携するところから始めましょう

次回は 障害対応ランブック作成 を学びます。障害時の初動を標準化するための手順書の作り方を解説します。

Related Articles