← Блог

Мониторинг Convex: внешний GET вместо дашборда

В Convex всё зелёное, а клиенты не могут сохранить данные. Дашборд и status.convex.dev не заменяют URL, который снаружи опрашивает StillOnline каждые несколько минут. HTTP actions живут на .convex.site — отдельно от Vercel-фронта. Разберём поверхности, добавим GET /health, разделим компоненты на странице статуса и подключим StillOnline.

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

Мониторьте GET на https://<deployment>.convex.site/health или прокси /api/health на Vercel — не только status.convex.dev. StillOnline шлёт HTTP GET; на Free — код ответа (не JSON), один URL, ~5 мин. При сбое — 503, не 200 с {"ok": false}.

Queries/mutations — на .convex.cloud, HTTP routes — на .convex.site. Health в дашборде — для отладки, не для клиентов. См. мониторинг Supabase · быстрый старт health.

1. Какие поверхности Convex критичны для пользователей

ПоверхностьЧто ломаетсяВнешний GET?
HTTP actions (.convex.site)Webhooks, публичный APIДа — основная цель
Queries/mutations (.convex.cloud)Экраны, live-данныеЧерез app или прокси
SchedulerПисьма, биллингLag в дашборде + /ready
Vercel frontendМаркетинг, SSRОтдельная проверка при необходимости

Не считайте status.convex.dev доказательством, что ваш деплой и Vercel в порядке.

2. HTTP actions как health probe

Эндпоинты в convex/http.ts на https://<name>.convex.site.

http.route({
  path: "/health", method: "GET",
  handler: httpAction(async () =>
    new Response(JSON.stringify({ status: "ok" }), { status: 200 })
  ),
});
curl -sS -o /dev/null -w "%{http_code}\n" https://YOUR-DEPLOY.convex.site/health

Handler < 2 с, без JWT. Тяжёлые проверки — на /ready с 503. Прокси через Vercel: Next.js health.

3. Отделить Convex от Vercel

СимптомСлойПервая проверка
Сайт грузится, actions падаютConvexcurl .convex.site/health
Сайт 502/503 целикомVercel/DNSmarketing vs API host
Все страдаютПлатформа Convexstatus.convex.dev + ваш probe

На Free один URL StillOnline — обычно /api/health, который трогает Convex как прод.

4. StillOnline и текст на странице статуса

  1. stillonline.tech/app → проект.
  2. GET health URL → ожидание 200.
  3. Компонент «Backend (Convex)».
  4. Один канал алертов на Free.

Шаблон: «Расследуем повышенные ошибки на Convex backend». Free не парсит JSON. Pro — больше URL (тарифы).

5. Снизить ложные срабатывания при throttle

ПричинаСигналФикс
Тяжёлый /readyTimeoutЛёгкий /health
Rate limiter429Исключить /health
WAF403Allowlist path

503 при реальном сбое — StillOnline Free увидит. 200 с ошибкой в JSON — ложный зелёный.

Что дальше

Задеплойте GET /health, зарегистрируйте в StillOnline, разделите компоненты, отрепетируйте инцидент платформы.

Дашборд StillOnline.

Связанные материалы

FAQ

StillOnline может бить Convex без auth?

Да — публичный GET /health. Без ключей в URL.

Что писать на странице статуса при сбое Convex?

Разделите «Web app» и «Backend (Convex)». При инциденте платформы — ссылка на status.convex.dev.

Что проверяет StillOnline Free?

Только код HTTP. 200 / 503.

Ложные алерты при throttle?

Исключите /health из rate limit, облегчите probe.

Прямой .convex.site или /api/health?

Оба ок. Прокси на Vercel ближе к тому, как бьёт браузер.

Дашборд Convex заменяет StillOnline?

Нет. Нужны внешние пробы и страница статуса.