Django

Страница статуса и мониторинг 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 — деградация.

health/views.py
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 сообщит, когда перестанет отвечать.

Исчерпание пула соединений

Долгие запросы забивают пул, новые запросы ловят таймаут. Ассершны по времени отклика вскрывают это до жалоб пользователей.

Headless-угол

Не нравится наша страница статуса? Соберите свою на Django.

Наш API отдаёт те же данные, что потребляет наша хостед-UI. Полная OpenAPI-спека на api.pulseapi.tech/docs.

Собственная страница статуса внутри Django — забираем нашу API во вьюхе.
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 минут

Бесплатный тариф, без карты. Добавьте эндпоинт, получайте алерты о падениях.