Страница статуса и мониторинг uptime для приложений Django
Мониторинг Django-вьюх, базы, Celery-воркеров и кеша. Алерты при всплесках latency или остановке воркеров. Хостед страница или headless через API.
Три способа запустить страницу статуса для Django
Выберите нужный уровень контроля — zero-code, low-code или полный headless.
Хостед
Добавьте Django-эндпоинт, направьте CNAME на status.yourdomain.com — готово. 5 минут.
Headless
Через публичный API собрать свою UI прямо в Django-приложении. Полный контроль дизайна и брендинга.
Смотреть APIВстраиваемые бейджи
SVG-бейджи uptime и статуса в README или лендинг. Обновляются каждые 5 минут.
Вставьте этот health endpoint в своё 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,
)Подключите вьюху на /health/ в urls.py. Исключите из middleware аутентификации. PulseAPI парсит JSON и может ассертить, что конкретные поля равны "ok".
Что ломается в Django-приложениях и как это поймать
Частично применённые миграции
Фейл миграции при деплое оставляет приложение в странном состоянии. Живая проверка /health ловит это моментально.
Молчащие Celery-воркеры
Воркеры могут перестать разбирать очередь, не падая. Экспозируйте health-эндпоинт с no-op-задачей — PulseAPI сообщит, когда перестанет отвечать.
Исчерпание пула соединений
Долгие запросы забивают пул, новые запросы ловят таймаут. Ассершны по времени отклика вскрывают это до жалоб пользователей.
Не нравится наша страница статуса? Соберите свою на 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-воркеров?
Экспозируйте health, который через .delay() кидает тривиальную задачу и с коротким таймаутом ждёт результат. Возвращайте 503, если задача не дошла.
Можно использовать на staging?
Да. По эндпоинту на окружение, с тегами. Staging-эндпоинты можно скрыть с публичной страницы, оставив алерты.
Можно захостить страницу статуса внутри Django?
Да — headless API отдаёт те же данные, что и хостед-версия. Запрос во вьюхе, передача в шаблон — всё.
Запустите мониторинг Django-приложения за 5 минут
Бесплатный тариф, без карты. Добавьте эндпоинт, получайте алерты о падениях.