docs(backlog): swap VPS DONE; sekcja planu Prometheus-as-truth floty

Swap 2-4GB na VPS -> Zamkniete (2026-06-22). Nowa sekcja planu monitoringu
floty (Prometheus pull up{}, osobny instance, bez Alertmanagera) z krokami.
Zastepuje szkic blackbox+Alertmanager z 2026-06-17.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
oskar 2026-06-22 22:15:24 +02:00
parent 1136a48222
commit ed54c2777a

View file

@ -4,6 +4,37 @@ Centralny tracker tech-długu i znanych usterek. Wpisy ze sesji — dodawaj z da
--- ---
## Plan: Monitoring floty — Prometheus jako źródło prawdy
**Data**: 2026-06-22
**Źródło**: sesja 2026-06-22 (`docs/sessions/2026-06-22.md`)
**Decyzja**: Prometheus (pull, `up{}`) zastępuje warstwę WYKRYWANIA liveness
(node-agent shipper + rsync/ssh + event-store + observer prune/checkpoint + ręczne TTL)
— przyczynę nawracających awarii (uid≠1000, ślepy ssh-mount, bloat ~242k eventów,
race prune↔checkpoint, NOMINAL-bez-TTL). Osobny fleet-Prometheus pod GitOps, **nie**
adopcja domowego instance PIHA. **BEZ** Alertmanagera — alert przez brain-watchdog.
Placement: VPS. Granica: zostają supervisor (remediacja), observer/panel, ha-diag-agent,
historia incydentów, out-of-band watchdog.
> Zastępuje wcześniejszy szkic (blackbox + Alertmanager) z sesji 2026-06-17.
**Kroki (priorytetowo)**:
1. Scaffold serwisu `fleet-prometheus` pod GitOps (worktree `task/fleet-prometheus`,
wzorzec `services/vikunja/`): compose + `env.example` + `service.yaml` + README +
`healthcheck.sh`; rejestracja w `hosts/vps/services.yaml` + `inventory/topology.yaml`;
exposure `tailscale-internal`; pusty scrape na start (self + lokalny `node_exporter` VPS).
2. Inwentaryzacja nodów floty `100.x` do scrape (osobny krok).
3. Container-layer exporter (cAdvisor lub lekki docker-state) — `node_exporter` nie widzi
kontenerów.
4. Reguły liveness (`up==0 for: 5m`) w Prometheusie.
5. brain-watchdog: drugie wejście — odpyt Prometheus `/api/v1/alerts` (`firing`) → Telegram,
bez ruszania działającego toru `token → chat_id`.
6. Rotacja tokenu HAOS w domowym prom (plaintext).
7. Przepięcie observer / panel `agents.okit.pl` na Prometheus jako źródło — największy
znak zapytania przy cutoverze.
8. Parallel-run obok rury eventowej; cutover dopiero gdy Prometheus-truth się udowodni.
---
## Aktywne ## Aktywne
### 🔴 BLOKUJĄCE — FLOTA-BOMBA: node-agent SSH mount ślepy po recreate ### 🔴 BLOKUJĄCE — FLOTA-BOMBA: node-agent SSH mount ślepy po recreate
@ -113,6 +144,19 @@ Długoterminowo: `agent.sh new` powinien odmawiać jeśli żądana gałąź jest
## Zamknięte ## Zamknięte
### Swap 24 GB na VPS — ZROBIONE
**Data**: 2026-06-22 (zgłoszone PENDING w sesji 2026-06-09 flota-recovery)
**Źródło**: sesja 2026-06-22 (`docs/sessions/2026-06-22.md`)
**Było**: VPS (3.7 GB RAM) z `swap=0` → OOM 2026-06-01.
**Zrobione**: `/swapfile` 4 GB aktywny i trwały (wpis w `/etc/fstab`); `vm.swappiness=10`
na żywo i w `/etc/sysctl.conf`. Weryfikacja: `free -h``Swap: 4.0Gi (0B used)`,
`/proc/swaps` zawiera `/swapfile`.
**Uwaga**: host-level one-off (nie czysto GitOps), udokumentowany jako celowy host-state
w `hosts/vps/host.yaml`. Brak commitu kodu — zmiana host-side gotowcem.
---
### Observer staleness — martwy node pokazywany NOMINAL ### Observer staleness — martwy node pokazywany NOMINAL
**Data**: 2026-06-08 (złapane), status: OTWARTY w sensie implementacji **Data**: 2026-06-08 (złapane), status: OTWARTY w sensie implementacji