Django

面向 Django 应用的状态页和正常运行时间监控

监控 Django 视图、数据库、Celery worker 和缓存。延迟飙升或 worker 停止时告警。托管状态页或通过 API 的 headless 模式。

为 Django 发布状态页的三种方式

选择所需的控制级别 — 零代码、低代码或完全 headless。

托管

添加 Django 端点,把 CNAME 指向 status.yourdomain.com,完成。5 分钟搞定。

Headless

通过公共 API 在你的 Django 应用内构建自有 UI,完全掌控设计与品牌。

查看 API

嵌入式徽章

将 SVG 正常运行时间和状态徽章放入 README 或落地页。每 5 分钟自动更新。

把这个 health 端点加入你的 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,
    )

在 urls.py 中将视图连到 /health/。从认证中间件中排除该路径。PulseAPI 会解析 JSON 响应,并可断言特定字段为 "ok"。

Django 应用会出什么故障 — 如何捕获

只执行了一半的迁移

部署时迁移失败会让应用处于奇怪状态。实时 /health 端点检查可立即发现。

Celery worker 静默

Worker 可能不崩溃但停止消费。暴露一个健康端点,让它入队一个无操作任务,停止响应时 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 worker?

暴露一个健康端点,用 .delay() 派发一个简单任务,并以短超时读取结果。任务未完成时返回 503。

可以用于 staging 环境吗?

可以。每个环境创建一个端点并打标签。可在公共状态页中隐藏 staging 端点,同时保留告警。

能否在 Django 内部自建状态页?

可以 — headless API 返回与托管页相同的数据。在视图中获取,传给模板即可。

5 分钟开始监控你的 Django 应用

免费套餐,无需信用卡。添加端点,故障时接收告警。