Django アプリ向けのステータスページと稼働監視
Django ビュー、データベース、Celery ワーカー、キャッシュを監視。レイテンシ急増やワーカー停止時にアラート。ホステッド型または API 経由のヘッドレス利用が可能。
Django のステータスページを公開する 3 つの方法
必要な制御レベルを選択 — ノーコード、ローコード、フルヘッドレス。
ホステッド
Django エンドポイントを追加し status.yourdomain.com に CNAME を向けるだけ。5 分で完成。
埋め込みバッジ
SVG の稼働率・ステータスバッジを README やランディングに埋め込み。5 分ごとに自動更新。
この health エンドポイントを Django アプリに貼り付けます
コピペして PulseAPI を URL に向けるだけ。健康なら 200、劣化なら 503 を返します。
from django.db import connection
from django.http import JsonResponse
from django.core.cache import cache
from django.views.decorators.http import require_GET
@require_GET
def health(request):
checks = {}
try:
with connection.cursor() as cur:
cur.execute("SELECT 1")
checks["database"] = "ok"
except Exception:
checks["database"] = "fail"
try:
cache.set("health-probe", "1", 5)
checks["cache"] = "ok" if cache.get("health-probe") == "1" else "fail"
except Exception:
checks["cache"] = "fail"
healthy = all(v == "ok" for v in checks.values())
return JsonResponse(
{"status": "healthy" if healthy else "degraded", **checks},
status=200 if healthy else 503,
)urls.py で /health/ にビューを接続します。認証ミドルウェアからは除外してください。PulseAPI は JSON をパースし、特定フィールドが "ok" であることをアサートできます。
Django アプリで壊れるもの — それを検知する方法
適用失敗マイグレーション
デプロイ時のマイグレーション失敗はアプリを不整合な状態にします。/health エンドポイントの外形監視で即座に検知できます。
無音になる Celery ワーカー
ワーカーはクラッシュせずに消費停止することがあります。no-op タスクを投入するヘルスエンドポイントを公開すれば、停止時にアラートできます。
コネクションプール枯渇
長時間クエリでプールが枯渇し新規リクエストがタイムアウトします。レスポンスタイム監視でユーザーが気づく前に発見できます。
当社のステータスページが気に入らない? Django で自作してください。
当社 API はホステッド UI と同じデータを返します。完全な OpenAPI 仕様書は api.pulseapi.tech/docs.
import requests
from django.shortcuts import render
def status_view(request):
data = requests.get(
"https://api.pulseapi.tech/status/acme", timeout=5,
).json()
return render(request, "status.html", {"data": data})Django 監視 — FAQ
Django REST framework、Django Channels、素の Django で動きますか?
すべてで動作します。PulseAPI は指定 URL を呼びレスポンスをアサートするだけなので、内部スタックは問いません。
Celery ワーカーの監視方法は?
.delay() で軽量タスクを投入して短いタイムアウトで結果を読むヘルスエンドポイントを公開してください。タスクが完了しなければ 503 を返します。
ステージングでも使えますか?
はい。環境ごとにエンドポイントを作成しタグ付けできます。公開ステータスページからステージングを非表示にしつつアラートだけ受け取れます。
Django 内でステータスページをセルフホストできますか?
はい。ヘッドレス API はホステッド UI と同じデータを返します。ビューで取得しテンプレートに渡すだけです。