first_commit

This commit is contained in:
kpa39l
2026-08-30 13:38:29 +00:00
commit 7a41e7f32c
10 changed files with 594 additions and 0 deletions
+93
View File
@@ -0,0 +1,93 @@
# 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.