docs: обновить README и EXPERIENCE после запуска стека (blackbox, host net, grafana.nixg.ru, mirror)

This commit is contained in:
kpa39l
2026-08-31 00:39:49 +00:00
parent e139988095
commit 10192cc4ef
2 changed files with 135 additions and 40 deletions
+58 -22
View File
@@ -8,30 +8,49 @@
```
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) │
│ prometheus :9090 (host net) │
│ │ scrape ──► garage x3 :3903 (WG admin) │
│ ├──► node-exporter :9100 (bigbox) │
│ ├──► 10.8.0.1:3903 (vps01) │
│ ├──► 10.8.0.4:3903 (vps02) │
│ └──► blackbox :9115 (host net) → /health │
│ │
│ 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)
│ │
▼ WireGuard 10.8.0.0/24 ▼ caddy (vps02)
vps01 (10.8.0.1) grafana.nixg.ru
vps02 (10.8.0.4) → 87.242.100.206 → reverse_proxy 10.8.0.2:3001
```
Прометеус и blackbox-exporter работают в **host network** (иначе не видят
WireGuard-подсеть 10.8.0.0/24 хостa). Остальные — в bridge-сети monitoring.
## Сервисы и порты
| Сервис | Порт | Доступ | Примечание |
|-----------|-----------|--------------------|--------------------------------|
| Prometheus| 9090 | локально/WG | retention 30d (TSDB) |
| Grafana | 3001 | браузер bigbox | 3000 занят gitea → 3001 |
| Loki | 3100 | локально | сбор логов |
| Promtail | — | docker.sock | docker logs garage |
| node-exp | 9100 | WG | на каждой ноде (системные метрики) |
| Сервис | Порт | Доступ | Примечание |
|------------------|--------|---------------------|-------------------------------------|
| Prometheus | 9090 | локально/WG | host network, retention 30d (TSDB) |
| Grafana | 3001 | браузер + публично | 3000 занят gitea → 3001 |
| Loki | 3100 | локально | сбор логов, retention 7d |
| Promtail | — | docker.sock | docker logs garage и др. |
| blackbox-exporter| 9115 | host network | HTTP-пробы /health нод |
| node-exporter | 9100 | WG | на каждой ноде (apt) |
## Публичный доступ
```
grafana.nixg.ru → 87.242.100.206 (vps02) → caddy → reverse_proxy 10.8.0.2:3001
```
- Запись добавлена в `/opt/caddy/Caddyfile` на vps02:
`grafana.nixg.ru { reverse_proxy 10.8.0.2:3001 }`
- Caddy — docker-контейнер (`network_mode: host`), перезагрузка:
`docker exec caddy caddy reload --config /etc/caddy/Caddyfile`
- Сертификат Let's Encrypt выпускается автоматически.
- Логин: **estorozhenko** (сменён с admin через UI), пароль — задан пользователем.
## Garage admin API (метрики)
@@ -41,18 +60,18 @@
```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..."
admin_token = "..."
metrics_token = "..."
```
Проверка метрик:
```
curl -H "Authorization: Bearer c213de..." http://10.8.0.2:3903/metrics
curl -H "Authorization: Bearer TOKEN" 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`
Порты 3903 и 9100 открыты только для WG-подсети:
- vps01: `ufw allow from 10.8.0.0/24 to any port 3903` (и 9100 аналогично)
- vps02/bigbox: файрвол не блокирует (policy ACCEPT)
## Запуск
@@ -63,6 +82,7 @@ docker compose up -d
```
Пароль Grafana — переменная `GRAFANA_ADMIN_PASSWORD` в `.env` (по умолчанию `admin`).
Пользователь Grafana: `estorozhenko` (сменён пользователем вручную).
## Полезные команды
@@ -73,10 +93,17 @@ docker run --rm -v /opt/garage/garage.toml:/etc/garage.toml:ro \
--entrypoint /garage dxflrs/garage:v2.1.0 status
# метрики одной ноды (Prometheus-формат)
curl -s -H "Authorization: Bearer <token>" http://10.8.0.2:3903/metrics | head
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
# таргеты прометея (все должны быть UP)
curl http://127.0.0.1:9090/api/v1/targets
# принудительная синхронизация mirror'а в gitea
curl -X POST -H "Authorization: token GITEA_TOK" \
http://127.0.0.1:3000/api/v1/repos/estorozhenko/monitoring/mirror-sync
```
## Алерты (prometheus/alerts.yml)
@@ -90,4 +117,13 @@ curl -s -o /dev/null -w "%{http_code}" http://10.8.0.2:3903/health
## Катастрофоустойчивость
Проект хранится в **двух** git-репозиториях (см. ниже) — на случай поломки bigbox.
Проект хранится в **двух** git-репозиториях — на случай поломки bigbox:
| Репозиторий | Роль | Адрес |
|-------------|------|-------|
| **gitverse.ru** (облако) | источник истины | `git@gitverse.ru:kpa39l/monitoring.git` |
| **gitea на bigbox** | pull-mirror (8h) | `https://gitea.nixg.ru/estorozhenko/monitoring` |
Порядок работы: правки коммитятся и пушутся в gitverse (источник), gitea
подтягивает их mirror'ом (каждые 8ч или вручную mirror-sync). Если bigbox
сломается — репозиторий остаётся в облаке gitverse.