mirror of
https://gitverse.ru/kpa39l/monitoring.git
synced 2026-09-29 09:55:09 +00:00
Этап 6: починка NO DATA в Grafana (3 причины)+relabel instance→hostname; исправлены имена garage-метрик в панелях и алертах; опыт в EXPERIENCE.md
This commit is contained in:
@@ -24,14 +24,14 @@
|
||||
|
||||
**Результат:** все 3 ноды отдают метрики, кластер HEALTHY.
|
||||
|
||||
## Этап 2. Стек мониторинга на bigbox (в работе 🔄)
|
||||
## Этап 2. Стек мониторинга на bigbox (выполнено ✅)
|
||||
|
||||
- [x] Создать `/opt/monitoring/` с docker-compose.yml, prometheus.yml, alerts.yml
|
||||
- [x] Prometheus: таргеты garage x3 (:3903), health x3, node-exporters, self
|
||||
- [ ] Node-exporter на 3 хостах (10.8.0.x:9100)
|
||||
- [ ] Запустить `docker compose up -d`
|
||||
- [ ] Проверить Prometheus :9090 (`up{job="garage"}`, targets)
|
||||
- [ ] Grafana :3001: datasource Prometheus, дашборд Garage, alerts
|
||||
- [x] Node-exporter на 3 хостах (10.8.0.x:9100)
|
||||
- [x] Запустить `docker compose up -d`
|
||||
- [x] Проверить Prometheus :9090 (`up{job="garage"}`, targets)
|
||||
- [x] Grafana :3001: datasource Prometheus, дашборд Garage, alerts
|
||||
|
||||
## Этап 3. Логи (после метрик 🔄)
|
||||
|
||||
@@ -78,41 +78,36 @@ Caddy → tproxy-server:8080 → MTProxy:2398. Admin-эндпоинты:
|
||||
|
||||
Задача:
|
||||
|
||||
- [ ] Обеспечить доступ 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).
|
||||
**Конкретные шаги (рекомендуемый вариант a):**
|
||||
- [ ] На vps03 (77.67.89.154) добавить nft-правило, разрешающее TCP 8081
|
||||
с публичного IP bigbox **178.176.197.2** (проверить актуальный IP
|
||||
bigbox перед выполнением: `curl -s https://api.ipify.org`):
|
||||
```
|
||||
nft add rule inet filter input ip saddr 178.176.197.2 tcp dport 8081 accept
|
||||
```
|
||||
(или внести в `/etc/tproxy-server/firewall.nft`, если он в авто-загрузке)
|
||||
- [ ] Проверить с bigbox:
|
||||
`curl -s http://77.67.89.154:8081/metrics | head`
|
||||
→ должен вернуть метрики tproxy (не timeout/refused).
|
||||
- [ ] Добавить job 'tproxy' в `/opt/monitoring/prometheus.yml`:
|
||||
```yaml
|
||||
- job_name: 'tproxy'
|
||||
static_configs:
|
||||
- targets: ['77.67.89.154:8081']
|
||||
labels:
|
||||
host: vps03
|
||||
service: tproxy
|
||||
```
|
||||
- [ ] `docker compose restart prometheus` в /opt/monitoring,
|
||||
проверить `up{job="tproxy"}` на 127.0.0.1:9090 = 1.
|
||||
- [ ] (Опционально) blackbox-job для внешнего HTTPS-чека vps03.nixg.ru:
|
||||
`probe_success` — контролирует Caddy+сайт снаружи.
|
||||
- [ ] Дашборд в Grafana: сессии, трафик (bytes_up/down rate), ошибки бэкенда.
|
||||
- [ ] Алерт: `tproxy_backend_dial_failures_total` растёт, или `/readyz` 503
|
||||
(можно ч/з blackbox по HTTP :8081, если открыт).
|
||||
- [x] **РЕШЕНО через SSH-туннель (не nft!)** — tproxy-server слушает `admin_listen: 127.0.0.1:8081`
|
||||
только на loopback (осознанно), простое nft-правило из плана НЕ сработало бы:
|
||||
соединение с bigbox упёрлось бы в `Connection refused` (проверено).
|
||||
Поэтому добавлен systemd-сервис `tproxy-tunnel.service` на bigbox:
|
||||
```
|
||||
ssh -i /home/estorozhenko/.ssh/hostkeyVPS \
|
||||
-L 127.0.0.1:18081:127.0.0.1:8081 -N \
|
||||
root@77.67.89.154
|
||||
```
|
||||
Порт 18081 (а НЕ 8081 — 8081 на bigbox занят ICQ-веб-чатом!).
|
||||
Prometheus скрейпит `127.0.0.1:18081`.
|
||||
- [x] Job 'tproxy' в prometheus.yml: `targets: ['127.0.0.1:18081']` → up=1, метрики скрейпятся.
|
||||
- [x] Дашборд Garage Cluster дополнен 3 панелями tproxy: live sessions/streams, traffic /sec,
|
||||
backend errors.
|
||||
- [x] Алерты TProxyDown (critical) и TProxyBackendErrors (warning) в alerts.yml.
|
||||
- [x] **Починен существующий баг: alerts.yml не был смонтирован в Prometheus** — garage-алерты
|
||||
не работали (0 групп правил). Добавлен volume `./alerts.yml:/etc/prometheus/alerts.yml:ro`
|
||||
в docker-compose.yml. Теперь загружено 6 правил (garage + tproxy).
|
||||
- [x] **Починены пустые панели (NO DATA, 2026-09-02)**: три причины подряд —
|
||||
(1) у datasource не был задан `uid` (Grafana генерила случайный), добавлен
|
||||
`uid: Prometheus` в datasources.yml; (2) URL `http://prometheus:9090` не
|
||||
резолвился из Grafana (Prometheus на host-сети), заменён на `http://172.28.0.1:9090`
|
||||
(шлюз bridge-сети Grafana = адрес хоста); (3) панели и алерты ссылались
|
||||
на несуществующие метрики (`garage_block_count`, `garage_rpc_node_health_is_up`,
|
||||
`garage_api_s3_request_counter`) — переписаны на реальные (`block_resync_*`,
|
||||
`cluster_layout_node_connected`, `rate(api_s3_request_counter[5m])`). Подробности —
|
||||
EXPERIENCE.md п.12-17.
|
||||
- [x] Relabel `instance` → hostname в prometheus.yml (garage/node/tproxy):
|
||||
`10.8.0.x` → `vps01|bigbox|vps02`, `127.0.0.1:18081` → `vps03:8081`.
|
||||
Легенды в Grafana — hostname, а не IP.
|
||||
|
||||
Заметки:
|
||||
- `/metrics` и admin-эндпоинты слушают ТОЛЬКО loopback (127.0.0.1:8081). При
|
||||
|
||||
Reference in New Issue
Block a user