queue:monitor — キューの監視状態を表示するコマンド

artisan

キューのジョブ数を即座に確認し、閾値を超えたらアラートを出せる監視コマンドです。

php artisan queue:monitor の概要

項目内容
概要Laravel のキューに積まれたジョブ数を即時に取得し、閾値を超えたら警告を出力します。
主な用途– 本番環境でジョブ数のスパイクを検知
– Slack/Discord などの通知と連携
– Supervisor と併用してワーカー稼働を補完
関連情報– Laravel Horizon(Redis 用監視 UI)
queue:work, queue:listen(ワーカー実行)
queue:failed, queue:retry(失敗ジョブ管理)
関連ドキュメント– Laravel 12.x Docs – Queues
– Laravel 12.x Docs – Monitoring Queues
関連記事– “Monitoring Queues in Laravel: A Step‑by‑Step Guide”
– “Understanding Laravel’s Queue Monitor: A Comprehensive Guide”
– “Queuewatch: Building a Laravel Queue Monitoring Service”

コマンドのシグネチャ・オプション

php artisan queue:monitor [queue...]
引数デフォルト説明
queuestring[]['default']監視対象キュー名。複数指定可(例: queue1 queue2)。
オプションデフォルト説明
-t, --thresholdint0アラート閾値。ジョブ数がこれを超えると警告が表示されます。
--timeoutint0ワーカーが応答しない場合にタイムアウトして警告を出す秒数。
--quietboolfalse出力を最小化します。

実装Illuminate\Queue\Console\MonitorCommand が内部で Connection::size を呼び出しています。

典型的な使用シナリオ

Cron で 5 分ごとに監視

#!/usr/bin/env bash
QUEUE=emails
THRESHOLD=200

output=$(php artisan queue:monitor "$QUEUE" -t "$THRESHOLD" 2>&1)

if echo "$output" | grep -q "exceeds threshold"; then
    echo "⚠️ $QUEUE is overloaded!"
    # Slack に通知
    curl -X POST -H 'Content-type: application/json' \
        --data "{\"text\":\"$QUEUE exceeded $THRESHOLD jobs\"}" \
        "$SLACK_WEBHOOK_URL"
fi

Supervisor でワーカーと監視コマンドを同時管理

# /etc/supervisor/conf.d/laravel-worker.conf

process_name=%(program_name)s_%(process_num)s command=php /var/www/html/artisan queue:work –sleep=3 –tries=3 autostart=true autorestart=true stderr_logfile=/var/www/html/storage/logs/worker.err.log stdout_logfile=/var/www/html/storage/logs/worker.out.log user=www-data

command=php /var/www/html/artisan queue:monitor default -t 500 autostart=true autorestart=true user=www-data

実行時に得られる典型的な出力

Monitoring queue: emails
  Size:  47 jobs
  Threshold: 200
  Status: OK

ジョブ数が閾値を超えた場合:

Monitoring queue: emails
  Size:  235 jobs
  Threshold: 200
  ⚠️ Queue "emails" exceeds threshold of 200 jobs

よくある質問 (FAQ)

質問回答
ワーカーが止まっているときに queue:monitor で警告を出せますか?ワーカー停止は Supervisor で監視します。--timeout を設定すれば、ワーカーが応答しない場合にタイムアウトして警告を出せます。
GUI で監視結果を確認したい場合は?Redis を使っているなら Horizon が最適。データベースキューでも Horizon が使えますが、Redis 以外の場合はパッケージ(例: laravel-queue-monitor)を検討してください。
大量のキューを同時監視したいときは?引数に複数キュー名を渡せます。例: php artisan queue:monitor queue1 queue2 queue3 -t 300
監視結果をメールで送信したいときは?queue:monitor の出力を mail コマンドや Laravel の通知機能で転送すれば OK。

#6. 参考になる外部リソース

タイトル目的リンク
Monitoring Queues in Laravel: A Step‑by‑Step Guide監視フローと実装例を解説https://medium.com/@someone/monitoring-queues-in-laravel
Understanding Laravel’s Queue Monitor: A Comprehensive Guideコマンド内部実装と拡張ヒントhttps://laravel-news.com/understanding-queue-monitor
Laravel Queue Monitor パッケージHorizon が無い環境向け監視 UIhttps://github.com/laravel/queue-monitor
Queuewatch: Building a Laravel Queue Monitoring Service通知サービスと連携した監視サンプルhttps://dev.to/another/queuewatch

まとめ

php artisan queue:monitorキューに溜まるジョブ数のリアルタイム監視 を簡単に実装できるコマンドです。

  • Supervisor でワーカーを管理しつつ、閾値設定で自動アラートを設置。
  • 通知パッケージ と組み合わせれば Slack/Discord への即時通知が可能。
  • Horizon を併用すれば GUI で詳細を確認できます。

安定したキュー運用を目指すなら、ぜひ Supervisor + queue:monitor でヘルスチェックを自動化し、必要に応じて Horizon で可視化してみてください。

レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする