Мониторинг 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 падают | Convex | curl .convex.site/health |
| Сайт 502/503 целиком | Vercel/DNS | marketing vs API host |
| Все страдают | Платформа Convex | status.convex.dev + ваш probe |
На Free один URL StillOnline — обычно /api/health, который трогает Convex как прод.
4. StillOnline и текст на странице статуса
- stillonline.tech/app → проект.
- GET health URL → ожидание 200.
- Компонент «Backend (Convex)».
- Один канал алертов на Free.
Шаблон: «Расследуем повышенные ошибки на Convex backend». Free не парсит JSON. Pro — больше URL (тарифы).
5. Снизить ложные срабатывания при throttle
| Причина | Сигнал | Фикс |
|---|---|---|
| Тяжёлый /ready | Timeout | Лёгкий /health |
| Rate limiter | 429 | Исключить /health |
| WAF | 403 | Allowlist path |
503 при реальном сбое — StillOnline Free увидит. 200 с ошибкой в JSON — ложный зелёный.
Что дальше
Задеплойте GET /health, зарегистрируйте в StillOnline, разделите компоненты, отрепетируйте инцидент платформы.
Связанные материалы
- Мониторинг Supabase backend
- Health check для Next.js SaaS
- Быстрый старт health URL
- Публичная страница статуса
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?
Нет. Нужны внешние пробы и страница статуса.