mirror of
https://gitverse.ru/kpa39l/monitoring.git
synced 2026-09-29 01:50:07 +00:00
7a41e7f32c34348660cda2c80bf91226a2ebcfcb
Monitoring stack — Garage cluster (vps01 + bigbox + vps02)
Стек мониторинга для S3-кластера Garage (репликация RF=3, WireGuard 10.8.0.0/24).
Расположен на bigbox в /opt/monitoring.
Архитектура
bigbox (10.8.0.2)
┌─────────────────────────────────────────────────┐
│ prometheus :9090 ── scrape ──► garage x3 :3903 │
│ │ (WG admin API) │
│ ├──► node-exporter :9100 (bigbox) │
│ └──► 10.8.0.1:3903 (vps01) │
│ 10.8.0.4:3903 (vps02) │
│ │
│ grafana :3001 (dashboards, alerts) │
│ loki :3100 (logs) │
│ promtail ── docker.sock ──► docker logs garage │
└─────────────────────────────────────────────────┘
│
▼ WireGuard 10.8.0.0/24
vps01 (10.8.0.1) vps02 (10.8.0.4)
Сервисы и порты
| Сервис | Порт | Доступ | Примечание |
|---|---|---|---|
| Prometheus | 9090 | локально/WG | retention 30d (TSDB) |
| Grafana | 3001 | браузер bigbox | 3000 занят gitea → 3001 |
| Loki | 3100 | локально | сбор логов |
| Promtail | — | docker.sock | docker logs garage |
| node-exp | 9100 | WG | на каждой ноде (системные метрики) |
Garage admin API (метрики)
В Garage v2.1 admin API (включая /metrics в Prometheus-формате) слушает
отдельный порт [admin] api_bind_addr. На всех трёх нодах прописано:
[admin]
api_bind_addr = "<WG-IP>:3903" # bigbox 10.8.0.2, vps01 10.8.0.1, vps02 10.8.0.4
admin_token = "c213de..."
metrics_token = "c213de..."
Проверка метрик:
curl -H "Authorization: Bearer c213de..." http://10.8.0.2:3903/metrics
/health возвращает 200 при кворуме (≥2 нод), 503 иначе.
Порты 3903 открыты только для WG-подсети:
- vps01:
ufw allow from 10.8.0.0/24 to any port 3903 - vps02/bigbox: файрвол не блокирует (policy ACCEPT)
Запуск
cd /opt/monitoring
docker compose up -d
Пароль Grafana — переменная GRAFANA_ADMIN_PASSWORD в .env (по умолчанию admin).
Полезные команды
# статус кластера
docker run --rm -v /opt/garage/garage.toml:/etc/garage.toml:ro \
-v /opt/garage/meta:/var/lib/garage/meta \
--entrypoint /garage dxflrs/garage:v2.1.0 status
# метрики одной ноды (Prometheus-формат)
curl -s -H "Authorization: Bearer <token>" http://10.8.0.2:3903/metrics | head
# health
curl -s -o /dev/null -w "%{http_code}" http://10.8.0.2:3903/health
Алерты (prometheus/alerts.yml)
| Алерт | Условие | Severity |
|---|---|---|
| GarageNodeDown | up{job="garage"} == 0 (2м) |
critical |
| GarageNoQuorum | <2 нод up (2м) |
critical |
| GarageResyncErrors | garage_block_resync_error_count > 0 (10м) |
warning |
| GarageNodeUnstable | RPC health down (5м) | warning |
Катастрофоустойчивость
Проект хранится в двух git-репозиториях (см. ниже) — на случай поломки bigbox.
Description
Pull-mirror of gitverse.ru:kpa39l/monitoring — Garage cluster monitoring stack (katastrofoustoychivost)
Languages
Python
100%