Единый мониторинг: бизнес-метрики + вынос Prometheus/Loki/Grafana на VPS с данными

Prometheus/Loki/Grafana больше не живут внутри backend-стека — единый
стек теперь на VPS с данными (netrunner-data), т.к. ему нужно видеть
ещё лендинг и все прокси-ноды, не только бэкенд. Отсюда только тонкий
promtail, пушащий логи по сети (LOKI_PUSH_URL).

Новые бизнес-метрики поверх уже существующих generic HTTP-метрик:
payments_total{provider,status}, nodes_online/nodes_total,
support_tickets_total{status}, referral_signups_total,
partner_commission_total{currency} — тем же макросом metrics::counter!/
gauge!, что уже был в api.rs/error.rs.

Новый гейт-эндпоинт GET /api/v1/admin/observability/check (только
Owner/Moderator) — для Caddy forward_auth перед Grafana (см.
netrunner-data/observability/Caddyfile), встройка в админку через
GRAFANA_PUBLIC_URL в GET /api/v1/config.

templates/init_node.sh — добавляет --metrics-port 9093 в провижининг
новых прокси-нод.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 23:20:44 +07:00
parent 4f6bba6885
commit 91e214dad2
12 changed files with 109 additions and 115 deletions
+18 -1
View File
@@ -32,13 +32,30 @@ REDIS_URL=redis://redis:6379
# =====================================================================
JWT_SECRET=CHANGE_ME_JWT_SECRET_openssl_rand_hex_32
ARGON_SALT=CHANGE_ME_ARGON_SALT_MIN_16_CHARS
GRAFANA_PASSWORD=CHANGE_ME_GRAFANA_PASSWORD
TON_MASTER_WALLET=UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKK8y
# Бэкапы Postgres (pg_dump + опциональный rclone) теперь настраиваются в
# netrunner-data/.env (там же, где физически стоит БД) — см.
# netrunner-data/scripts/backup.sh. Здесь их больше нет.
# =====================================================================
# === НАБЛЮДАЕМОСТЬ ===
# =====================================================================
# Prometheus/Loki/Grafana теперь единым стеком на VPS с данными (см.
# netrunner-data/docker-compose.observability.yml) — GRAFANA_PASSWORD
# больше не нужен здесь. Этот бэкенд только пушит логи туда через тонкий
# promtail (сервис `promtail` в docker-compose.prod.yml) — публичный адрес
# того VPS, порт 3100 (обязательно зафайрволенный там на IP этого хоста).
LOKI_PUSH_URL=http://CHANGE_ME_DATA_VPS_IP:3100
# Публичный URL Grafana за auth-гейтом Caddy (см.
# netrunner-data/observability/Caddyfile) — отдаётся фронту через
# GET /api/v1/config для встройки в ObservabilityPage.tsx (frontend/src/).
# Не задан — страница просто не показывает дашборды. Ставить ТОЛЬКО после
# того, как в Caddyfile настоящий backend-URL вместо CHANGE_ME_BACKEND_PUBLIC_URL —
# иначе будет вести на нерабочий auth-гейт.
GRAFANA_PUBLIC_URL=https://CHANGE_ME_GRAFANA_DOMAIN
# Опционально: без него оплата через @CryptoBot вернёт "provider not
# supported", остальные провайдеры продолжают работать. Токен — у @CryptoBot:
# /pay -> Create App -> Payment Token.