5.3 KiB
5.3 KiB
Codex-Prompt: Komodo 5xx-Spam Root-Cause
Stand: 2026-05-31 Auftraggeber: Operator Vorarbeit: Claude (auto-mode), siehe Ermittlungsstand unten.
Auftrag
HomelabTraefik5xx feuert dauerhaft fuer service="komodo@docker". Quelle
finden, fixen, dokumentieren. Bitte einmal bis zum Ende durchziehen, nicht
nur eine Hypothese pruefen.
Vor Arbeitsbeginn lesen
CLAUDE.mddocs/WORKFLOW.mdmonitoring/prometheus/alerts.ymldocs/ALERT_RULES.mdops/komodo/docker-compose.ymltraefik/docker-compose.ymlmonitoring/prometheus/prometheus.yml(Blackbox-Targets)monitoring/blackbox/blackbox.ymlops/glance/config/glance.yml(5 Komodo-URL-Stellen, NICHT die Quelle — siehe Ermittlung)
Ermittlungsstand (bereits geklaert)
Was gemessen wurde
- Traefik-Access-Log: Source-IP ist eure WAN-IP
217.249.121.39(Hairpin aus dem Heimnetz). User-Agent leer ("-"). - Muster:
GET /200 alle 15s +GET /user500 alle 30s, plus gelegentlichPOST /auth/login/GetLoginOptions200 undPOST /read/GetCoreInfo500. - Prometheus
sum by (code) (increase(traefik_service_requests_total{service="komodo@docker"}[5m])):200=22,500=14 (Werte vom 2026-05-31 08:11 UTC). docker logs komodo-coreist still — keine internen Errors, nur normale Execute-Requests. Komodo wirft den 500 also vermutlich auf Auth-Pfad (/userohne gueltige Session sollte401sein, nicht500). Das ist ein Komodo-Bug-on-Top, aber nicht die Frage.
Ausgeschlossene Kandidaten (durch Test)
- Browser-Tabs — User hat alle Komodo-Tabs zugemacht, Polling laeuft weiter.
- PWA auf Handy — User hat keine.
- Uptime-Kuma — Container existiert nicht mehr.
- Homepage — entfernt.
- Glance — Test 2026-05-31 ~08:35 UTC: 130s gestoppt, 5xx-Rate
unveraendert (2/60s Baseline → 4/130s waehrend Stop). Trotz 5 Komodo-URL-
Eintraegen in
ops/glance/config/glance.yml(search-shortcut Zeile 40, bookmark Zeilen 131/768, monitor-Widget Zeile 237 mitcheck-url: http://komodo-core:9120, docker-containers-Widget Zeile 725). Glance ist raus.
Noch nicht getestete Kandidaten
- Posture-Check / cert-token-check.sh (
services/posture-check/) — koennte periodisch Komodo-HTTPS pingen. 15s-/30s-Kadenz waere ungewoehnlich fuer einen Cron-Job, aber pruefen. - Blackbox-Exporter — pollt laut
monitoring/prometheus/prometheus.ymlhttps://komodo.kaleschke.infoalle 15s. Das erklaert denGET / 200- Anteil sauber. Erklaert aber NICHT denGET /user 50030s-Takt. - Komodo Periphery — auf
komodo_netundfrontend_net. Sollte mit Core via internes Netz reden, koennte aber per Misconfig die Public-URL treffen. Logs noch nicht eingesehen. - Komodo Core selbst mit
KOMODO_HOST=https://komodo.kaleschke.info— evtl. Self-Check via Public-URL. - Ein Gerat im LAN, das wir noch nicht auf dem Schirm haben (zweiter Rechner mit altem Tab, Smart-TV, etc.).
Was nicht geht
tcpdumpfehlt auf dem Host.conntrackzeigt die Hairpin-Pakete nicht (NAT-Pre-Routing).
Naechste Schritte (Vorschlag)
- Blackbox-Exporter ausschliessen: Targets in
prometheus.ymlzeigen, dass Blackbox NURhttps://komodo.kaleschke.infopollt (also/, kein/user). Bestaetigen. - Posture-Check pruefen:
services/posture-check/cert-token-check.shlesen, Kadenz und Endpunkte protokollieren. Falls dort/useroder ein 30s-Loop drin ist → Treffer. - Periphery isolieren: Periphery 2 min stoppen, Traefik-Log gegen-
checken.
docker stop komodo-periphery; sleep 130; <log-check>; docker start komodo-periphery. Vorsicht: Periphery-Down heisst Komodo-Deploy funktioniert nicht — also nur kurz, kein Deploy in dem Fenster. - Komodo-Core isolieren: Wenn 1-3 nichts ergeben, Komodo-Core selbst 2 min stoppen. Wenn Polling weiterlaeuft, ist der Client ausserhalb der Komodo- Stack (LAN-Geraet). Wenn es aufhoert, polled Komodo Core sich selbst.
- LAN-Aufnahme via Komodo-Container: Falls Container-Stack ausgeschlossen,
im komodo-core-Container per
ss -tnp state syn-recvwaehrend einer typischen Polling-Sekunde mitschauen. Source-IP/Port der eingehenden Connection liefert den Hairpin-Origin am genauesten.
Fix-Erwartung
Sobald Quelle bekannt:
- Wenn Container im Stack: Config so anpassen, dass die Anfrage intern laeuft (kein Public-Hostname), inkl. Doku.
- Wenn LAN-Geraet: User informieren, was es ist; wenn moeglich Geraet reparieren (Tab schliessen, App deinstallieren). Kein Repo-Change noetig.
- Wenn nicht abstellbar: separate Frage, ob
HomelabTraefik5xxfuerservice="komodo@docker"mit einem Exclude versehen werden soll — aber nur als letzter Ausweg. Default ist: Quelle fixen.
Doku am Ende
- Eintrag in
docs/MIGRATION_LOG.md: Datum, Symptom, Root-Cause, Fix, Smoke-Test. - Falls eine Glance-/Periphery-/sonstige Config-Aenderung noetig wird: Standard-Loop (Commit → Push → Komodo-Deploy → Smoke), Co-Authored-By-Tag mitgeben.
Regeln (nicht verhandelbar)
- Git → Push → Komodo. Keine direkten Komodo-Edits.
- Stop/Start-Tests sind okay, aber nur kurz (≤ 3 min) und mit Wiederanlauf-Schritt im selben Block.
- Secrets nicht ausgeben.
- Bei zwei gescheiterten Versuchen: stop, Pflichtmatrix aus
docs/GITOPS_DRIFT_RUNBOOK.md, Operator fragen.