diff --git a/PLAN.md b/PLAN.md index 4620342..755d971 100644 --- a/PLAN.md +++ b/PLAN.md @@ -53,6 +53,66 @@ - [ ] Дашборд: статус нод, занятость диска, блоки, репликация - [ ] Уведомления алертов (например, в Telegram/почту) +## Этап 6. Метрики tproxy-server (vps03) — TODO 🔄 + +WEB Proxy для Telegram Desktop развёрнут на vps03 (77.67.89.154, Debian 13): +Caddy → tproxy-server:8080 → MTProxy:2398. Admin-эндпоинты: + +- `http://127.0.0.1:8081/readyz` → 200 `ready` / 503 `backend unavailable` + (TCP-проба ко всем backend-профилям, у нас 127.0.0.1:2398) +- `http://127.0.0.1:8081/healthz` → всегда `ok` (процесс жив) +- `http://127.0.0.1:8081/metrics` → Prometheus-формат (текст, version 0.0.4) + +Метрики tproxy (счётчики из `internal/server/server.go` serveMetrics): + +| Метрика | Смысл | +|---|---| +| tproxy_sessions_live / streams_live | активные сессии/потоки | +| tproxy_backend_dials_in_flight | исходящие к MTProxy в полёте | +| tproxy_pending_bytes / _items | очередь ожидающих данных | +| tproxy_sessions_created_total / closed_total | создано/закрыто (суммарно) | +| tproxy_streams_opened_total / rejected_total | открыто/отклонено потоков | +| tproxy_backend_dial_failures_total | **ошибки коннекта к MTProxy** (рост = проблема) | +| tproxy_bytes_up_total / down_total | трафик вверх/вниз (всего) | +| tproxy_limit_hits_total | срабатывания лимитов | + +Задача: + +- [ ] Обеспечить доступ Prometheus (bigbox) к `:8081` на vps03. + vps03 НЕ в WG-сети (10.8.0.0/24 = vps01/bigbox/vps02). + Варианты: + a) открыть 8081 на vps03 для IP bigbox в nft (правило в + `/etc/tproxy-server/firewall.nft` или отдельный файл) — самый простой; + b) добавить vps03 в WG (если хочется закрытый контур); + c) node-exporter + textfile-коллектор — не наш случай (метрики уже в HTTP). + Рекомендация: (a). +- [ ] Добавить job в `/opt/monitoring/prometheus.yml`: + ```yaml + - job_name: 'tproxy' + static_configs: + - targets: ['77.67.89.154:8081'] + labels: + host: vps03 + service: tproxy + ``` + Prometheus в этом стеке — `network_mode: host`, внешние IP видит (см. + EXPERIENCE.md п.7). +- [ ] Перезапустить prometheus (`docker compose restart prometheus`), + проверить `up{job="tproxy"}` на :9090. +- [ ] (Опционально) blackbox-job для внешнего HTTPS-чека vps03.nixg.ru: + `probe_success` — контролирует Caddy+сайт снаружи. +- [ ] Дашборд в Grafana: сессии, трафик (bytes_up/down rate), ошибки бэкенда. +- [ ] Алерт: `tproxy_backend_dial_failures_total` растёт, или `/readyz` 503 + (можно ч/з blackbox по HTTP :8081, если открыт). + +Заметки: +- `/metrics` и admin-эндпоинты слушают ТОЛЬКО loopback (127.0.0.1:8081). При + открытии наружу — резать по источнику (IP bigbox) в nft, не публиковать всем. +- readyz сделает TCP-пробу К КАЖДОМУ профилю — если добавить второй профиль + с мёртвым бэкендом, readyz станет 503 (это фича). +- Секреты WEB Proxy (profiles.json) к мониторингу отношения не имеют — в + метрики не попадают. + ## Риски / заметки - Перезапуск нод кластера безопасен, но делать по очереди.