docs(backlog): zamknij deploy.sh vps bug + 2 nowe wpisy (prom-reload, chelsty node_exporter)
- 🔴 deploy.sh vps↔control-plane → Zamknięte (fix3b71707, guard deploy-local.sh) - krok 2 planu floty (targety 100.x) → ZROBIONE (7d4014e) - NOWE: deploy-node.sh nie reloaduje config-driven serwisów (cicha rozbieżność deploy↔config) - NOWE: zbadać chelsty/chelsty-infra node_exporter DOWN z VPS - Problem B (ghost kontenery) pozostaje otwarty osobno Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
39ab34643d
commit
48107ef2c1
|
|
@ -22,7 +22,9 @@ historia incydentów, out-of-band watchdog.
|
|||
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).
|
||||
2. ✅ ZROBIONE (2026-06-26, commit `7d4014e`) — Inwentaryzacja nodów floty `100.x` do
|
||||
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).
|
||||
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.
|
||||
|
|
@ -37,25 +39,48 @@ historia incydentów, out-of-band watchdog.
|
|||
|
||||
## Aktywne
|
||||
|
||||
### 🔴 KRYTYCZNY — `deploy.sh vps` niszczy control-plane (project-name divergence)
|
||||
### `deploy-node.sh` nie reloaduje config-driven serwisów (cicha rozbieżność deploy↔config)
|
||||
|
||||
**Data**: 2026-06-24 (wykryte), 2026-06-25 (incydent potwierdzony w produkcji)
|
||||
**Źródło**: sesja 2026-06-24 + sesja 2026-06-25 (`docs/sessions/2026-06-25.md`)
|
||||
**Problem A — deploy.sh vps niszczy mózg**: `control-plane` jest w `hosts/vps/services.yaml`
|
||||
jako zwykły serwis pętli `deploy-node.sh`. Pętla używa innego `COMPOSE_PROJECT_NAME` niż
|
||||
`deploy-local.sh` (który ma `cwd=services/control-plane`). Niezgodność → Recreate →
|
||||
`No such container: <hash>_control-plane-observer` → `set -e` przerywa pętlę →
|
||||
observer/supervisor/executor/ui znikają. **Każdy `deploy.sh vps` rozkłada mózg.**
|
||||
**Problem B — ghost kontenery w panelu**: martwe kontenery ze starych project-name'ów
|
||||
**Data**: 2026-06-26
|
||||
**Źródło**: sesja 2026-06-26 (`docs/sessions/2026-06-26.md`)
|
||||
**Problem**: po zmianie `prometheus.yml` (bez zmiany obrazu) `deploy-node.sh` NIE
|
||||
recreate'uje kontenera. Compose widzi "kontener działa, obraz ten sam" → zostawia
|
||||
Running, NIE podmienia configu → Prometheus trzyma stary config w pamięci. **Deploy
|
||||
raportuje green, a zmiana configu nie wchodzi w życie.** Dziś wymagało ręcznego
|
||||
`docker compose ... up -d --force-recreate`. Dotyczy KAŻDEGO serwisu config-driven bez
|
||||
zmiany obrazu (nie tylko Prometheus).
|
||||
**Fix**: po zmianie configu serwisu albo `--force-recreate`, albo POST `/-/reload` dla
|
||||
serwisów z lifecycle API (fleet-prometheus ma `--web.enable-lifecycle`). Rozważyć
|
||||
wykrywanie zmiany plików config w deploy i wymuszanie recreate.
|
||||
|
||||
---
|
||||
|
||||
### Zbadać: chelsty + chelsty-infra `node_exporter` DOWN z VPS
|
||||
|
||||
**Data**: 2026-06-26
|
||||
**Źródło**: sesja 2026-06-26 (`docs/sessions/2026-06-26.md`)
|
||||
**Problem**: przy inwentaryzacji targetów floty do fleet-prometheusa, `node_exporter`
|
||||
na chelsty i chelsty-infra był nieosiągalny z VPS — pominięte w scrape. To LTE edge
|
||||
(intermittent uplink), więc DOWN może być normą, ale wymaga rozróżnienia: brak
|
||||
node_exportera vs odcięty uplink vs zablokowany port.
|
||||
**Fix**: ustalić, czy node_exporter w ogóle działa na obu chelsty (compose/proces),
|
||||
czy jest osiągalny po Tailscale z VPS, i czy ma sens go scrape'ować mimo LTE
|
||||
(prawdopodobnie tak — `up==0` na LTE = sygnał dla anomaly detection, nie fałszywy alarm).
|
||||
|
||||
---
|
||||
|
||||
### Ghost kontenery w panelu (Problem B — pozostałość po project-name divergence)
|
||||
|
||||
**Data**: 2026-06-24 (wykryte), pozostaje otwarte po fixie Problemu A (2026-06-26)
|
||||
**Źródło**: sesja 2026-06-24 + 2026-06-25 + 2026-06-26
|
||||
**Problem**: martwe kontenery ze starych project-name'ów
|
||||
(`8547b46c0317_control-plane-supervisor`, `12bd3059a70f_control-plane-observer` itp.)
|
||||
są raportowane przez observera jako `error` → `System Status ERROR` w panelu mimo
|
||||
zdrowego realnego mózgu.
|
||||
**Incydent 2026-06-25**: mózg VPS zniknął, odtworzony ręcznie:
|
||||
`ssh -t vps 'cd ~/homelab-codex-ws && git pull && cd services/control-plane && bash deploy-local.sh'`
|
||||
**⚠️ NIE uruchamiać `deploy.sh vps` do czasu fixu — używać `deploy.sh control-plane`
|
||||
lub `deploy-local.sh` bezpośrednio.**
|
||||
**Fix**: usunąć `control-plane` z pętli `hosts/vps/services.yaml` ALBO dodać skip
|
||||
w `deploy-node.sh` dla serwisów z własnym `deploy-local.sh`; potem `docker rm` ghostów.
|
||||
**Status**: destrukcyjny deploy (Problem A) NAPRAWIONY (`3b71707`, patrz Zamknięte), ale
|
||||
ghosty z poprzednich rozjazdów wciąż wiszą.
|
||||
**Fix**: `docker rm` ghostów na VPS; rozważyć czyszczenie kontenerów z obcym
|
||||
project-name przy deployu.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -192,6 +217,24 @@ Długoterminowo: `agent.sh new` powinien odmawiać jeśli żądana gałąź jest
|
|||
|
||||
## Zamknięte
|
||||
|
||||
### 🔴 KRYTYCZNY — `deploy.sh vps` niszczył control-plane — NAPRAWIONE (commit `3b71707`)
|
||||
|
||||
**Data**: 2026-06-24 (wykryte), 2026-06-25 (incydent w produkcji), 2026-06-26 (naprawione)
|
||||
**Źródło**: sesja 2026-06-24 + 2026-06-25 + 2026-06-26 (`docs/sessions/2026-06-26.md`)
|
||||
**Było (Problem A)**: `control-plane` w `hosts/vps/services.yaml` jako zwykły serwis
|
||||
pętli `deploy-node.sh`. Pętla używała innego `COMPOSE_PROJECT_NAME` niż `deploy-local.sh`
|
||||
(cwd=`services/control-plane`). Niezgodność → Recreate → `No such container:
|
||||
<hash>_control-plane-observer` → `set -e` przerywa pętlę → observer/supervisor/executor/ui
|
||||
znikają. Każdy `deploy.sh vps` rozkładał mózg (potwierdzone w produkcji 2026-06-25).
|
||||
**Naprawione**: guard w `deploy-node.sh` pomijający serwisy z własnym
|
||||
`services/<svc>/deploy-local.sh`. `control-plane` ZOSTAJE w `services.yaml` (gate
|
||||
pytest+build nadal go testuje), pomijana jest tylko destrukcyjna pętla deployu.
|
||||
**Potwierdzone w boju**: `deploy.sh vps` wypisał `Skipping control-plane: ma własną
|
||||
ścieżkę deployu`, mózg `Up 25h healthy`, nietknięty.
|
||||
**Pozostało osobno**: ghosty z poprzednich rozjazdów (Problem B — patrz Aktywne).
|
||||
|
||||
---
|
||||
|
||||
### Flaky testy control-plane — state-leak w pytest — NAPRAWIONE (commit `992ff7c`)
|
||||
|
||||
**Data**: 2026-06-24 (zgłoszone), 2026-06-25 (naprawione)
|
||||
|
|
|
|||
Loading…
Reference in a new issue