Express.js

Страница статуса и мониторинг uptime для приложений Express

Мониторинг Express-роутов, цепочек middleware и Node-воркеров. Алерты по времени отклика, SSL, хостед, headless API.

Три способа запустить страницу статуса для Express.js

Выберите нужный уровень контроля — zero-code, low-code или полный headless.

Хостед

Добавьте Express.js-эндпоинт, направьте CNAME на status.yourdomain.com — готово. 5 минут.

Headless

Через публичный API собрать свою UI прямо в Express.js-приложении. Полный контроль дизайна и брендинга.

Смотреть API

Встраиваемые бейджи

SVG-бейджи uptime и статуса в README или лендинг. Обновляются каждые 5 минут.

Вставьте этот health endpoint в своё 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 }

Монтируйте до auth middleware. Короткие таймауты на downstream не дают пробе зависать.

Что ломается в Express.js-приложениях и как это поймать

Необработанные promise rejections

Async-баг на старом Node может тихо уронить процесс. Uptime-чек ловит 502 за секунды.

Баги порядка middleware

Перестановка может дать 500 на конкретных роутах. Мульти-эндпоинт мониторинг показывает.

Memory leak со временем

Медленная утечка ломает через часы. Ассершн по времени отклика ловит 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?

Да. Эндпоинт с queue depth и heartbeat воркера. Ассершн на порог и свежесть heartbeat.

Работает с HTTPS-редиректами?

Да. PulseAPI идёт по редиректу и ассертит по итоговому ответу.

Можно встроить страницу статуса в Express?

Да. Запрос в handler через публичный API, рендер через EJS/Pug/Handlebars или JSON фронту.

Запустите мониторинг Express.js-приложения за 5 минут

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