← Блог

Мониторинг Turso / libSQL для SaaS

API отдаёт 200, а каждый запрос к Turso уходит в timeout. Это ложный зелёный БД: процесс жив, libSQL на edge недоступен. Честный мониторинг — разделить liveness приложения и доступность БД, read-only пробы и StillOnline на публичный /ready, а не прямой Turso URL с Bearer-токеном.

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

У Turso есть GET /health на HTTPS URL базы, но токен не кладите в StillOnline. Сделайте GET /ready в приложении с SELECT 1 (таймаут 3–5 с) → 503 при сбое. Free: один URL, ~5 мин, только код ответа.

База: быстрый старт health · Neon/PlanetScale.

1. Разделить health приложения и доступность БД

Цель probeЧто доказываетStillOnline?
GET /healthПроцесс отвечаетДа, но без БД
GET /ready + libSQLКлиент читает данныеДа — предпочтительно
Turso /health + BearerHTTP слой БДНет — секрет в конфиге

Не вставляйте токены Turso в StillOnline. Паттерн как у пула соединений.

2. Безопасные read-only пробы

Только SELECT 1, без записи. Таймаут 3–5 с. Тот же пул, что у handlers.

app.get("/ready", async (req, res) => {
  try {
    await Promise.race([
      client.execute("SELECT 1"),
      new Promise((_, r) => setTimeout(() => r(new Error("timeout")), 5000))
    ]);
    return res.json({ status: "ok" });
  } catch (e) {
    return res.status(503).json({ status: "down" });
  }
});

Free не парсит JSON — 503 на /ready, 200 на /health только для процесса.

3. Пороги latency на edge replicas

Монитор смотрит из другой географии — фиксируйте p95 от региона probe, не из датацентра. StillOnline доказывает reachability; latency — в логах/APM.

4. StillOnline через API-слой

  1. stillonline.tech/apphttps://api.product.com/ready.
  2. GET, ожидание 200.
  3. /ready без auth.
  4. 2–3 цикла после деплоя.
  5. Один канал алертов на Free.

Компонент на странице статуса: «Database» или «API».

5. Текст страницы статуса при деградации БД

Пишите, что чувствует пользователь — «не сохраняются данные», не «libSQL heartbeat failed». Шаблоны — до первого ночного инцидента. Апдейт в течение 15 мин после DOWN. Resolve только после curl /ready снаружи.

Что дальше

/ready в StillOnline, шаблоны статуса, вторая проверка маркетинга на Pro, status Turso при массовых репортах.

Дашборд StillOnline.

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

FAQ

StillOnline бить Turso напрямую или через /ready?

Через /ready в приложении. Прямой URL — с Bearer, не для StillOnline.

Чем Turso отличается от Neon в мониторинге?

SQLite на edge vs Postgres serverless; оба — /ready с лёгким запросом.

Какой запрос в /ready?

SELECT 1, таймаут 3–5 с, 503 при ошибке.

Что видит StillOnline Free?

Только HTTP-код на одном URL.

Нужен ли status Turso?

Да для vendor-wide; /ready — для tenant-specific сбоев.

Когда копать latency?

Устойчивое удвоение p95, не один медленный probe.