Метрики /metrics для Next.js и ws-proxy (центральный Prometheus)

proxy-ws (Rust/axum) — тот же паттерн, что api.rs в netrunner-backend:
PrometheusBuilder + middleware, считающий http_requests_total/
http_request_duration_seconds по методу/пути/статусу.

Next.js — app/api/metrics/route.ts на prom-client (явный
runtime="nodejs", т.к. Edge Runtime не тянет perf_hooks/process.*),
отдаёт default-метрики процесса (CPU/память/event loop lag).

Оба порта (3000/3001) перестают быть 127.0.0.1-only — их должен
скрейпить центральный Prometheus на VPS с данными, обязательно
зафайрволить там на его IP (см. комментарии в docker-compose.yml).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 23:21:43 +07:00
parent d99026d13b
commit 383077e1e6
7 changed files with 489 additions and 22 deletions
+11 -2
View File
@@ -4,8 +4,14 @@ services:
image: ghcr.io/nineap/netrunner-landing:latest
container_name: netrunner-landing
restart: always
# Не 127.0.0.1 — /api/metrics (см. app/api/metrics/route.ts) должен
# скрейпиться удалённым центральным Prometheus (см.
# netrunner-data/docker-compose.observability.yml). Порт 3000 в целом уже
# не секрет (это тот же самый сайт, что и по HTTPS через реверс-прокси
# перед ним) — но ОБЯЗАТЕЛЬНО зафайрволить на этом VPS на IP
# observability-сервера, чтобы не плодить лишний голый-HTTP путь к сайту.
ports:
- "127.0.0.1:3000:3000"
- "3000:3000"
environment:
- NODE_ENV=production
# PB_PUBLIC_URL — адрес PocketBase для клиентских компонентов (Pricing,
@@ -51,8 +57,11 @@ services:
image: ghcr.io/nineap/netrunner-landing-proxy:latest
container_name: netrunner-ws-proxy
restart: always
# Не 127.0.0.1 — /metrics (см. proxy-ws/src/main.rs) должен скрейпиться
# удалённым центральным Prometheus. Обязательно зафайрволить на IP
# observability-сервера (см. netrunner-data/docker-compose.observability.yml).
ports:
- "127.0.0.1:3001:3001"
- "3001:3001"
environment:
- PB_INTERNAL_URL=http://netrunner-cms:8090
depends_on: