Files
monitoring/README.md
T
2026-08-30 13:38:29 +00:00

93 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`. На всех трёх нодах прописано:
```toml
[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.