2026年6月21日

HTTP応答障害を検知する監視設定ガイド|ステータスコード別アラート実践

HTTP監視 死活監視 障害検知 アラート設定 制作会社

サイトが「落ちている」とき、クライアントよりも先に検知できているでしょうか。HTTP応答障害の検知は、死活監視の中でも最も基本的かつ重要な機能です。しかし「何をもって障害と判定するか」「どのステータスコードでアラートを出すか」の設計が雑だと、誤検知が増えたり、逆に重大な障害を見逃したりします。

このガイドでは、HTTP応答障害の正確な検知方法——ステータスコード別の判定ロジック、アラート設定のベストプラクティス、Miterlでの実装手順——を解説します。

HTTPステータスコードと障害判定

HTTPステータスコードは3桁の数字で、サーバーがリクエストをどのように処理したかを示します。

コード 分類 障害か?
2xx(200・201など) 成功 正常(障害なし)
3xx(301・302など) リダイレクト 設定次第(通常は正常)
4xx(404・403・429など) クライアントエラー 要注意(コンテンツ削除・アクセス制限)
5xx(500・502・503など) サーバーエラー 障害(即時アラート推奨)
タイムアウト(接続失敗) 応答なし 障害(即時アラート推奨)

監視ツールが「DOWN」と判定する条件

Miterl では以下の条件でステータスを「DOWN」に切り替え、アラートを発報します。

  • サーバーから5xxレスポンスが返った場合
  • 設定した時間内に応答がなかった場合(タイムアウト)
  • 接続自体が拒否された場合(Connection refused)
  • DNSの名前解決に失敗した場合

ステータスコード別の障害判定ポリシー

5xx系:サーバーエラー(即時アラート対象)

5xx系はサーバー側に問題が発生していることを示すため、即時アラートの対象です。

コード 意味 よくある原因
500 Internal Server Error PHPエラー・DB接続失敗
502 Bad Gateway Nginxとバックエンドの通信失敗
503 Service Unavailable サーバー過負荷・メンテナンス中
504 Gateway Timeout バックエンド処理のタイムアウト

制作会社の案件では、WordPress の PHP エラーが 500 を引き起こすケースが最も多く見られます。プラグイン更新後や大量ページ生成処理の直後は特に注意が必要です。

4xx系:クライアントエラー(状況に応じて判断)

4xx系は「リクエストに問題がある」ことを示しますが、サイト全体の障害ではないケースも多いです。

コード 意味 判定方針
400 Bad Request 通常は障害とみなさない
401/403 認証失敗・アクセス拒否 監視対象URLが認証必須なら設定見直しが必要
404 Not Found 監視対象URLが削除・移動された可能性
429 Too Many Requests レート制限。監視ツール自体がブロックされている可能性

重要: 監視ツールはブラウザではないため、Basic認証がかかっているURLをそのまま監視すると 401 が返ってきます。認証情報をリクエストヘッダに含めて設定する必要があります。

タイムアウト:応答なし(即時アラート対象)

タイムアウトはステータスコードが返らない状態です。以下のケースが該当します。

  • サーバーが起動していない(ホスティング障害)
  • ファイアウォールがリクエストをブロックしている
  • ネットワーク経路の問題
  • サーバーが過負荷で接続キューが溢れている

タイムアウトの閾値は「サイトの通常レスポンス時間 × 3〜5倍」を目安に設定します。通常1秒以内のサイトであれば、5〜10秒でタイムアウトとする設定が一般的です。

Miterlでの実装手順

基本的なHTTPモニターの作成

# HTTPモニターを作成(5xxとタイムアウトで自動的にDOWN判定)
curl -X POST https://miterl.com/api/v1/monitors \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/",
    "name": "example.com - コーポレートサイト",
    "type": "http",
    "interval_seconds": 60,
    "alert_contact_ids": [1, 2]
  }'

interval_seconds: 60 は1分ごとに確認する設定です。重要なサイトは60秒、そうでないサイトは180秒(3分)が一般的な設定です。

認証が必要なページの監視

管理画面や会員ページを監視する場合は、リクエストヘッダに認証情報を含めます。

# Basic認証が必要なURLの監視設定
curl -X POST https://miterl.com/api/v1/monitors \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/admin/",
    "name": "example.com - 管理画面",
    "type": "http",
    "interval_seconds": 180,
    "request_headers": {
      "Authorization": "Basic dXNlcjpwYXNzd29yZA=="
    },
    "alert_contact_ids": [1]
  }'

モニターの状態確認

# 現在のステータスを確認
curl -s "https://miterl.com/api/v1/monitors/1" \
  -H "Authorization: Bearer YOUR_API_KEY" | \
  jq '{name: .name, status: .status, uptime_30d: .uptime_30d}'
# 出力例: {"name": "example.com", "status": "up", "uptime_30d": 99.97}

誤検知を減らすアラート設定

リトライ回数の設定

HTTP障害の多くは瞬間的なもの(ネットワーク経路の一時的な揺れ、サーバーの短期スパイク)です。1回の異常ですぐにアラートを出すと誤検知が増えます。Miterl ではデフォルトで確認回数を設定でき、複数回連続して異常が確認されてからアラートを発報する設定が可能です。

推奨設定:

  • コーポレートサイト: 2回連続でDOWNを確認したらアラート
  • EC・予約システム: 即時アラート(1回でDOWN確認)

Quiet hours(深夜アラートの抑制)

深夜の軽微な一時的障害(2〜3分で自動復旧するもの)に毎回起こされると、担当者のアラート疲れにつながります。重要度が低いサイトは深夜時間帯のアラートを抑制する設定を入れることを検討してください。

アラート疲れの防止策全般については「アラート疲れを防ぐ監視設定」でまとめています。

HTTP応答障害の検知から復旧までのフロー

[Miterl が5xxまたはタイムアウトを検知]
        ↓
[1分後に再確認(リトライ)]
        ↓
[2回連続でDOWN → アラート発報(Slack + メール)]
        ↓
[担当者が受信 → 障害内容を確認]
        ↓
[原因特定: 5xxならサーバーログ確認、タイムアウトならサーバー起動確認]
        ↓
[復旧対応(PHPエラー修正・サービス再起動など)]
        ↓
[Miterl が2xxを確認 → UP アラート発報(復旧通知)]
        ↓
[クライアントへ報告(第一報・経緯説明)]

アラートを受け取ってから復旧までの全フローは「Webサイト障害対応の手順書:制作会社向けインシデントレスポンスガイド」で詳しく解説しています。

複数URLを一括監視する

制作会社では複数のクライアントサイトを同時に管理します。APIを使うと一括で監視状態を把握できます。

# 全モニターの現在ステータスを一覧取得
curl -s "https://miterl.com/api/v1/monitors?per_page=100" \
  -H "Authorization: Bearer YOUR_API_KEY" | \
  jq -r '.data[] | "\(.status) | \(.name)"'
# 出力例:
# up | 株式会社A - コーポレートサイト
# down | 株式会社B - ECサイト  ← 障害中
# up | 株式会社C - 予約システム

DOWN 状態のサイトだけを抽出するフィルタリングも可能です。

# DOWNのモニターだけを取得
curl -s "https://miterl.com/api/v1/monitors?per_page=100" \
  -H "Authorization: Bearer YOUR_API_KEY" | \
  jq -r '.data[] | select(.status == "down") | "\(.name): \(.last_checked_at)"'

よくあるHTTP応答障害のパターンと原因

症状 よくある原因 対処
500エラーが突然出た プラグイン更新・コード変更 エラーログ確認・変更を切り戻す
503が出て5〜10分で復旧 サーバー一時過負荷 サーバースペック・トラフィックを確認
接続タイムアウトが続く サーバーダウン・ファイアウォール問題 ホスティング管理画面を確認
403が急に出た .htaccessの設定ミス・WAFによるブロック .htaccessを確認
リダイレクトループ WordPressのSSL設定ミス wp-config.phpFORCE_SSL_ADMIN 確認

まとめ

HTTP応答障害の検知は「何をもって障害と判定するか」の定義から始まります。

  • 5xxとタイムアウトは即時アラート対象
  • 4xxは状況に応じて判断(認証エラーは監視設定の見直し)
  • 誤検知を減らすにはリトライ設定と quiet hours を活用する
  • 複数サイトはAPIで一括監視して漏れをなくす

HTTP応答監視でサイトの「生死」は判定できますが、「遅くなっている」は判定できません。レスポンスタイムの劣化を早期に検知する方法は「レスポンスタイム監視とは?サイト表示速度の低下を早期発見する方法」で解説しています。SSL証明書の期限切れも「HTTPSが返らなくなる」という形でHTTP監視に引っかかりますが、事前に防ぐには「SSL証明書の期限切れ事故を防ぐ!自動監視で安全なサイト運用を」で専用の期限監視を設定しておくのが確実です。

Miterlで今すぐ試したい方は無料プランで登録してください。詳しい機能はドキュメントで確認できます。監視の設定から運用ノウハウまでの事例はユースケースページをご覧ください。導入前の疑問はよくある質問もあわせてご確認ください。