Страница статуса и мониторинг 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 — деградация.
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-паузы.
Не нравится наша страница статуса? Соберите свою на Express.js.
Наш API отдаёт те же данные, что потребляет наша хостед-UI. Полная OpenAPI-спека на api.pulseapi.tech/docs.
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 минут
Бесплатный тариф, без карты. Добавьте эндпоинт, получайте алерты о падениях.