Express.js

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

监控 Express 路由、中间件链和 Node worker。响应时间告警、SSL、托管页面、headless API。

为 Express.js 发布状态页的三种方式

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

托管

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

Headless

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

查看 API

嵌入式徽章

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

把这个 health 端点加入你的 Express.js 应用

复制、粘贴、把 PulseAPI 指向 URL。健康时返回 200,降级时返回 503。

src/routes/health.ts
import { Router } from 'express'
import { db } from '../db'
import { redis } from '../redis'

const router = Router()

router.get('/health', async (_, res) => {
  const checks: Record<string, string> = {}
  try { await db.raw('select 1'); checks.database = 'ok' } catch { checks.database = 'fail' }
  try { const pong = await redis.ping(); checks.cache = pong === 'PONG' ? 'ok' : 'fail' } catch { checks.cache = 'fail' }
  const healthy = Object.values(checks).every((v) => v === 'ok')
  res.status(healthy ? 200 : 503).json({
    status: healthy ? 'healthy' : 'degraded',
    ...checks,
  })
})

export { router as healthRouter }

挂在认证中间件之前。下游检查使用短超时以避免探针卡顿。

Express.js 应用会出什么故障 — 如何捕获

未处理的 Promise rejection

在旧 Node 上异步 bug 可能让进程静默崩溃。Uptime 检查能在几秒内捕获 502。

中间件顺序 bug

重排中间件会在特定路径漏 500。多端点监控可揭示。

随时间累积的内存泄漏

慢泄漏要数小时才显现。响应时间告警在 GC 暂停出现时触发。

Headless 视角

不喜欢我们的状态页? 用 Express.js 自己构建。

我们的 API 返回的数据与托管 UI 完全一致。完整 OpenAPI 规范见 api.pulseapi.tech/docs.

渲染自定义状态页的 Express handler。
router.get('/status', async (_, res) => {
  const r = await fetch('https://api.pulseapi.tech/status/acme', {
    signal: AbortSignal.timeout(5000),
  })
  const data = await r.json()
  res.render('status', { data })
})

Express.js 监控 — FAQ

能与 Express 4、5、Connect 或 Fastify 使用吗?

任何 Node HTTP 框架。PulseAPI 对应用是外部的。

能否监控 BullMQ / Agenda 队列?

可以。端点返回队列深度和 worker 心跳,断言阈值和心跳新鲜度。

能处理 HTTPS 重定向吗?

可以。PulseAPI 跟随重定向并对最终响应断言。

能否在 Express 内嵌入状态页?

可以。在 handler 中调用公共 API,用 EJS/Pug/Handlebars 渲染或将 JSON 传给前端。

5 分钟开始监控你的 Express.js 应用

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