Мониторинг SaaS на Vercel — health URL и страница статуса

Vercel упрощает выкладку Next.js: push в Git, preview, Edge или Node в одной панели. Production всё равно требует health endpoint, который интернет вызывает без cookie сессии, и внешнего мониторинга — иначе маркетинг зелёный, а /api отдаёт 503.

StillOnline по расписанию бьёт в production health, автоматически даёт страницу статуса и шлёт алерты владельцу на email, в Telegram (бот StillOnline) или Slack. Ниже — App Router (app/api/health/route.ts), production URL и проверка в StillOnline. Общие шаги: быстрый старт health URL. Railway: гайд Railway.

Краткий ответ

На Vercel добавьте app/api/health/route.ts (dynamic GET с 200), задеплойте и укажите в StillOnline проверку на https://your-app.vercel.app/api/health (или свой домен). StillOnline бьёт в URL из интернета каждые 5 мин на Free и даёт страницу статуса. Исключите /api/health из middleware с авторизацией; алерты — Алерты в Telegram или Алерты в Slack.

1. Файл app/api/health/route.ts

Для проб удобен route handler: вы задаёте JSON, коды ответа и включение БД. При обращении к БД держите роут dynamic, иначе возможен закэшированный «ok» при мёртвом Postgres.

import { NextResponse } from "next/server";

export const dynamic = "force-dynamic";

export async function GET() {
  let db: "ok" | "error" = "ok";

  try {
    // Опционально: await prisma.$queryRaw`SELECT 1`;
  } catch {
    db = "error";
  }

  const healthy = db === "ok";
  const status = healthy ? "ok" : "degraded";

  return NextResponse.json(
    {
      status,
      service: "my-saas",
      db,
      timestamp: new Date().toISOString(),
    },
    { status: healthy ? 200 : 503 },
  );
}

503 при кратком сбое БД — честно, но шумно при миграциях. Для liveness верните 200 без пинга БД.

2. Деплой на Vercel

Подключите репозиторий, production branch и env в панели. Запомните хост: https://your-app.vercel.app или свой домен.

Перед StillOnline с ноутбука:

curl -sS https://your-app.vercel.app/api/health

Нужны JSON и 200 на том же hostname, что пойдёт в StillOnline.

3. Типичные проблемы Vercel

Middleware, runtime и protection на preview — частые причины, почему внешняя проверка падает, а UI Vercel спокоен.

ПроблемаРешение
middleware режет /api/healthИсключить путь в matcher
Edge без драйвера БДNode runtime или без БД в health
Protection на previewМониторить только production
Редирект wwwУказать финальный HTTPS URL

4. Проверка в StillOnline

Укажите тот же URL, что проверили curl — StillOnline не деплоит на Vercel и не читает логи Vercel.

  1. Начать бесплатно.
  2. Проект + slug страницы статуса.
  3. HTTP → https://your-app.vercel.app/api/health, 200, 5 мин.
  4. Сохраните https://stillonline.tech/ru/s/demo в документации, при онбординге B2B и в шаблонах поддержки — не прячьте ссылку в футере сайта.
  5. Pro: MCP после смены домена.

Free: 1 URL, история 24 ч. Pro $9/мес: 10 URL, приватные страницы, API/MCP, 90 дТарифы.

Алерты владельца: при сбое и восстановлении включите email, Telegram или Slack в настройках — на Free один канал, на Pro / Ultimate все три. Гайды: Алерты в Telegram · Алерты в Slack.

5. Vercel зелёный, продукт «лежит»

Зелёный деплой не гарантирует довольных пользователей. На serverless эти разрывы встречаются часто — при необходимости опишите их инцидентом на странице статуса.

  • Cold start serverless — редкие таймауты.
  • Один регион — один монитор = слепая зона; для критичного — второй инструмент (обзор).
  • Stripe и др. — health отражает ваш SLA; внешние deps — через инциденты на странице статуса.

FAQ

StillOnline на Vercel: Route Handler или Server Component?

Для проверки — Route Handler в app/api/health/route.ts с dynamic = "force-dynamic". Маркетинг может кэшировать «ok», пока API сломан — StillOnline видит только зарегистрированный URL.

Что указать в StillOnline — лендинг Vercel или /api/health?

Если платят за API — мониторьте /api/health. Лендинг может быть зелёным при неверном DATABASE_URL на API. Ссылку StillOnline на страницу статуса — в README, help center и онбординге, не в футере сайта.

Speed Insights Vercel заменяет мониторинг StillOnline?

Нет. Speed Insights — перформанс; HTTP-проверки StillOnline — доступность и алерты. CWV лендинга — Page Speed StillOnline на публичных URL, не на /health.

Можно ли повторить health-паттерн StillOnline на Vercel?

У StillOnline в проде JSON health с опциональным пингом БД; ваш handler может быть проще. После успешного curl зарегистрируйте production HTTPS — быстрый старт health.