From 39ab34643dfec63970d88318ab7272c2e92abe0b Mon Sep 17 00:00:00 2001 From: Oskar Kapala Date: Fri, 26 Jun 2026 17:30:19 +0200 Subject: [PATCH] =?UTF-8?q?docs(kb):=20sesja=202026-06-26=20=E2=80=94=20fl?= =?UTF-8?q?eet-prometheus=20targety=20floty=20+=20zamkni=C4=99cie=20buga?= =?UTF-8?q?=20deploy.sh=20vps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - targety node_exporter floty (piha/solaria/lustro) wdrożone (7d4014e) - fix deploy.sh vps↔control-plane potwierdzony w boju (3b71707) - PENDING: health-verify targetów w /api/v1/targets nie potwierdzony - lekcja: nie commitować na master równolegle gdy CC pracuje na wątku (potrójny rebase) Co-Authored-By: Claude Opus 4.8 --- docs/sessions/2026-06-26.md | 102 ++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 docs/sessions/2026-06-26.md diff --git a/docs/sessions/2026-06-26.md b/docs/sessions/2026-06-26.md new file mode 100644 index 0000000..6d401a3 --- /dev/null +++ b/docs/sessions/2026-06-26.md @@ -0,0 +1,102 @@ +# Sesja 2026-06-26 — fleet-prometheus etap 2: targety floty + zamknięcie buga deploy.sh vps + +## Cel + +Kontynuacja "Prometheus jako źródło prawdy liveness floty" (krok 2 z planu w backlogu): +dodać targety `node_exporter` floty `100.x` do `fleet-prometheus`. Przy okazji domknięty +najgroźniejszy bug z 2026-06-25 — `deploy.sh vps` rozkładający control-plane. + +--- + +## ZROBIONE + +### fix(deploy): guard pętli deploy-node — control-plane pomijany (commit `3b71707`) + +**Bug** (🔴 KRYTYCZNY, backlog A z 2026-06-24/25): `deploy.sh vps` deployował +`control-plane` przez pętlę `deploy-node.sh` z `COMPOSE_PROJECT_NAME` wywiedzionym +z `REPO_PATH` — innym niż `deploy-local.sh` (cwd=`services/control-plane`). Niezgodność +project-name → Recreate → `No such container: _control-plane-observer` → `set -e` +przerywa pętlę → mózg (observer/supervisor/executor/ui) znika. Potwierdzone w produkcji +2026-06-25. + +**Fix**: guard w `deploy-node.sh` — serwisy z własnym `services//deploy-local.sh` +są pomijane w destrukcyjnej pętli. `control-plane` **ZOSTAJE** w `hosts/vps/services.yaml` +(gate pytest+build nadal go testuje), pomijany jest tylko deploy pętlą; ma własną ścieżkę +`deploy-local.sh` z poprawnym `COMPOSE_PROJECT_NAME`. + +**Potwierdzone w boju**: `deploy.sh vps` wypisał `Skipping control-plane: ma własną +ścieżkę deployu`, mózg nietknięty — observer/supervisor/executor/ui `Up 25h healthy`. +Najgroźniejszy bug wczorajszej sesji — zamknięty. + +--- + +### feat(fleet-prometheus): targety node_exporter floty (commit `7d4014e`) + +Dodano do `prometheus.yml` targety floty, każdy z labelką `node:`: + +| node | target | status (recon z VPS) | +|---|---|---| +| piha | `100.108.208.3:9100` | UP | +| solaria | `100.100.231.104:9100` | UP (intermittent) | +| lustro | `100.99.85.73:9100` | UP (off nocą — case anomaly detection) | +| vps | `host.docker.internal` (`node:vps`) | zachowany z etapu 1 | + +**Pominięte świadomie**: +- **saturn** — laptop/workstation, nie serwer floty. +- **chelsty + chelsty-infra** — `node_exporter` DOWN z VPS (LTE edge). Do zbadania + osobno (backlog). + +**Zero labelek availability/godzin** — polityka "kiedy alarmować" celowo NIE trafia do +configu Prometheusa. Pójdzie do anomaly detection (mózg uczy się wzorca dobowego z +historii metryk). Na teraz: tylko scrape + label `node:`, Prometheus gromadzi historię. + +--- + +### docs(backlog): pomysł anomaly-detection liveness (commit `1529911`) + +Zapisano ideę: zamiast statycznych okien czasowych w regułach alertowych, mózg czyta +historię z Prometheus i SAM wykrywa wzorzec dobowy per node. `up==0` zgodne z nauczonym +wzorcem offline = nie alarmuj; odbiegające = realna awaria. Wymaga tygodni historii → +realne za ~2-4 tyg. + +--- + +## DEPLOY + +`deploy.sh vps` przeszedł: DEPLOY OK, verify=green, 24 kontenery healthy. Fix A +potwierdzony (control-plane pominięty w pętli). Prometheus zrecreate'owany przez ręczny +`docker compose ... up -d --force-recreate`; config z 4 targetami widoczny w kontenerze. + +--- + +## PENDING (NIE potwierdzone — nie zakładać sukcesu) + +- **Health targetów piha/solaria/lustro w `/api/v1/targets` NIE zweryfikowany** po finalnym + recreate. Config je zawiera, ale czy scrape zwraca `up` — do sprawdzenia przy powrocie. + - **lustro** może być `down` jeśli noc/off → to NIE błąd, to case dla anomaly detection. + - **solaria** intermittent — podobnie. + +--- + +## Wnioski + +- **Najgroźniejszy bug zamknięty świadomym guardem, nie usuwaniem z manifestu**: + `control-plane` zostaje w `services.yaml` (gate go testuje), pomijana jest tylko + destrukcyjna pętla deployu. Rozdzielono "co testować" od "jak deployować". + +- **Cicha rozbieżność deploy↔config (nowy tech-debt)**: `deploy-node.sh` po zmianie + `prometheus.yml` NIE reloaduje/recreate'uje kontenera — Compose widzi ten sam obraz, + zostawia Running, config się nie podmienia. Deploy mówi "green", a Prometheus trzyma + stary config w pamięci. Dziś wymagało ręcznego `--force-recreate`. Dotyczy KAŻDEGO + serwisu config-driven bez zmiany obrazu. → backlog. + +- **Potrójny rozjazd mastera przez równoległą sesję KB**: w trakcie pracy CC na wątku + Prometheusa równoległa sesja commitowała na master (bulk import Gmail). Rebase ratował, + ale to anty-wzorzec. **Lekcja: nie commitować na master równolegle, gdy CC pracuje na + branchu/wątku** — albo izolować pracę w worktree, albo serializować commity na master. + +- **Etap "targety floty" prawie domknięty**: config wdrożony, health-verify pending. + Następne etapy (osobne taski): reguły liveness (`up==0 for: 5m`), wpięcie + firing→brain-watchdog (`/api/v1/alerts`→Telegram, bez Alertmanagera), potem cutover ze + starej rury eventowej. Plus: zbadać czemu chelsty `node_exporter` down; anomaly + detection gdy uzbiera się historia.