Rozstrzygniecie 1. Monolit mieszal cztery typy OKF. Rozbity PER TYP po
granicy sekcji `##`:
10 x decision — pozycje backlogu (w tym backlog-aktywne 28 KB
i backlog-zamkniete 12 KB, ktore zostaja calosciami)
7 x incident — bugi/awarie dotad wtopione w backlog: cutover HA ken,
checkpoint observera, ha-diag-agent node=unknown,
deploy-local ghost-kontenery, paperless-worker config,
deploy-node nie przebudowuje obrazu, ollama bez sterownika
2 x phase — HA configs-as-code, monitoring floty Prometheus
kb/phases/backlog.md zostaje jako cienki indeks (type: phase, status: active):
oryginalna preambula + wygenerowany spis linkow do wszystkich 19 elementow.
23 przychodzace odwolania zostaja przepiete na ta sciezke w grupie 7.
NIE rozbijano po `###` (38 pozycji w "Aktywne" + 13 w "Zamkniete" = 51
plikow). Rozstrzygniecie mowi "rozbij per typ", a nie per pozycja;
rozdrobnienie do 51 plikow rozerwaloby czytelnosc backlogu.
Kontrola: preambula + 19 sekcji == oryginal z HEAD (multizbior niepustych
linii). Tresc pozycji nietknieta.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
3 KiB
3 KiB
| okf | type | visibility | status | updated | links | |
|---|---|---|---|---|---|---|
| 0.1 | phase | private | active | 2026-08-03 |
|
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):
- Scaffold serwisu
fleet-prometheuspod GitOps (worktreetask/fleet-prometheus, wzorzecservices/vikunja/): compose +env.example+service.yaml+ README +healthcheck.sh; rejestracja whosts/vps/services.yaml+inventory/topology.yaml; exposuretailscale-internal; pusty scrape na start (self + lokalnynode_exporterVPS). - ✅ ZROBIONE (2026-06-26, commit
7d4014e) — Inwentaryzacja nodów floty100.xdo scrape. Dodane: piha/solaria/lustro (node:label), vps zachowany. Saturn pominięty (workstation), chelsty/chelsty-infra pominięte (node_exporter down z VPS → osobny wpis). - Container-layer exporter (cAdvisor lub lekki docker-state) —
node_exporternie widzi kontenerów. - ✅ ZROBIONE (2026-06-30, commit
d417000) — Reguły liveness (up==0 for: 5m).rules/liveness.yml:NodeDown expr up{node=~"vps|piha"}==0 for 5m severity critical. Only always-on (vps, piha); solaria/lustro świadomie wykluczone (intermittent → anomaly detection). Deploy: fleet-prometheus Recreated (zmiana compose), reguła inactive=poprawnie. - ✅ ZROBIONE (2026-06-30, commit
62d6fc0) — brain-watchdog: drugie wejście — poll Prometheus/api/v1/alerts(firing) → Telegram. Architektura A: dwa niezależne tory, mózg NIETKNIĘTY, debounce per-alert (klucz alertname:node w state.json). 12 testów pass. PENDING zamknięty 2026-07-02: poll POTWIERDZONY reconem (obraz zbudowany po62d6fc0,PROMETHEUS_URLw.envi w env kontenera, zero poll failed) — patrzdocs/infra/inventory-verify-2026-07-02.md. ✅ END-TO-END UDOWODNIONE 2026-07-06 (Etap 0 cutoveru): tor Prometheus → watchdog → Telegram potwierdzony w produkcji testemAlertTestEtap0(firing → log polla → Telegram → rollback) — patrzdocs/sessions/2026-07-06.md. - Rotacja tokenu HAOS w domowym prom (plaintext).
- Przepięcie observer / panel
agents.okit.plna Prometheus jako źródło — największy znak zapytania przy cutoverze. - Parallel-run obok rury eventowej; cutover dopiero gdy Prometheus-truth się udowodni.