Skip to content

Fehlerbehebung

Symptom → Diagnose → Behebung. Runbook für die häufigsten Fehlerursachen.

SymptomErste PrüfungBehebung
helm install soctalk-system schlägt im Pre-Install-Hook fehlkubectl logs -n soctalk-system job/<release>-preinstall-checkInstalliere die fehlende Cluster-Voraussetzung (CNI, cert-manager, StorageClass) gemäß dem Install-Leitfaden
API-Pod CrashLoopBackOff beim Startkubectl logs -n soctalk-system deploy/soctalk-system-apiMeistens: fehlerhaftes DATABASE_URL-Secret, Postgres noch nicht bereit oder fehlgeschlagene Alembic-Migration. Prüfe zuerst den Postgres-Pod
helm install erfolgreich, aber MSSP-UI liefert 502Logs des Ingress-Controllers; prüfe, ob die endpoints des Ingress-Service befüllt sindOIDC-Proxy nicht bereitgestellt oder injiziert keine vertrauenswürdigen Header. Prüfe das Trusted-Proxy-CIDR
Mandant-Erstellung liefert 500API-Logs zeigen ProvisionErrorNormalerweise ist helm install tenant-* fehlgeschlagen. Prüfe helm status tenant-<slug>. Namespace- und Resource-Quota-Probleme sind am häufigsten
Mandant hängt seit > 15 min in provisioningkubectl -n tenant-<slug> get events --sort-by=.lastTimestampSiehe Mandant hängt in Provisioning im Betriebshandbuch
Mandant wechselt in degradedAdapter-Logs im Namespace des MandantenNetworkPolicy-Egress, Absturz des Adapter-Pods oder DNS falsch aufgelöst
Mandantenübergreifende Daten sichtbarIsolations-Testsuite ausführenP1-Vorfall. RLS ist die letzte Verteidigungslinie; ein Fehler deutet auf einen Anwendungsfehler oder eine fehlerhafte Postgres-Rollenkonfiguration hin
LLM-Aufrufe schlagen für einen Mandanten fehlWorker-Logs: nach 401/403 vom LLM-Anbieter suchenDer runs-worker liest aus Secret/tenant-llm-key im Namespace tenant-<slug>. Maßgebliche Quelle ist IntegrationConfig.llm_api_key_plain in Postgres — rotiere über PATCH /api/mssp/tenants/{id}/llm (UI: Mandantendetail → Settings → LLM), was das Secret neu schreibt und den runs-worker neu startet
Wazuh-Agent kann keine Verbindung herstellenLB-IP des Mandanten (oder Edge-HAProxy-IP+Port) vom Agent-Host erreichbar; DNS für <slug>.soc.mssp.* löst dorthin auf; 1514/1515 durch jede zwischengeschaltete Firewall offenSiehe Wazuh Ingress. 1514 ist Wazuhs proprietäres Protokoll — es gibt kein SNI zum Inspizieren; die Weiterleitung erfolgt anhand von Zieladresse oder Port. Stelle sicher, dass der Service des Mandanten (type: LoadBalancer oder der HAProxy-Port) die Adresse ist, die der Agent anspricht
Postgres-StatefulSet startet nicht (PVC Pending)kubectl describe pvc -n soctalk-systemKeine Standard-StorageClass, die Klasse unterstützt kein RWO oder der Cluster hat keinen freien Speicherplatz mehr
PolicyViolation-Meldungen vom Ingress-ControllerNetworkPolicy-Allow-RegelnStelle sicher, dass der Ingress-Namespace mit kubernetes.io/metadata.name=ingress-system gelabelt ist
Cilium Hubble zeigt DROPPED-Flows zwischen Mandant und soctalk-systemNetworkPolicies + Cilium-IdentitätenAdapter-Egress-Policy fehlt oder falscher namespaceSelector
Login eines Kundenbenutzers liefert 403 bei /api/tenant/*JWT-ClaimsStelle sicher, dass die Benutzerzeile tenant_id gesetzt hat und role=customer_viewer
MSSP-Benutzer-Impersonation erscheint nicht im Kunden-AuditAudit-AbfragePrüfe, ob die Spalte acting_as beim Schreiben befüllt wird; die Kunden-Audit-Ansicht joint auf tenant_id = own AND acting_as IS NOT NULL
Isolationstest schlägt in CI fehl (FORCE-RLS-Admin kann Zeilen sehen)Migration angewendet?Führe alembic upgrade head erneut aus; stelle sicher, dass FORCE ROW LEVEL SECURITY auf jede mandantengebundene Tabelle angewendet wird
ImagePullBackOff bei Mandant soctalk-adapter / soctalk-runs-workerkubectl -n tenant-<slug> describe pod zeigt Pull-Fehler für ghcr.io/soctalk/soctalk-adapter:0.1.13-fixes (oder ähnlich)Bekannt: render.py verwendet standardmäßig ein Tag, das möglicherweise nicht in der öffentlichen ghcr vorhanden ist. Überschreibe zur Installationszeit: setze tenantProvisioning.adapterImageTag: latest und tenantProvisioning.runsWorkerImageTag: latest in den soctalk-system-Values. Diese werden bis zu den Env-Variablen SOCTALK_TENANT_ADAPTER_IMAGE_TAG / SOCTALK_TENANT_RUNS_WORKER_IMAGE_TAG am API-Deployment durchgereicht, die das Provisioning-Rendering liest

Diagnose-Bundles sammeln

Sammle beim Eskalieren an den Support:

bash
# SocTalk-Zustand auf Systemebene
kubectl get all,events,networkpolicies,resourcequotas \
  -n soctalk-system -o yaml > soctalk-system.yaml
kubectl -n soctalk-system logs deploy/soctalk-system-api --tail=500 > api.log
# (Der V1-Chart bündelt den Orchestrator in den API-Pod — kein separates Deployment)

# Bestimmter Mandant
kubectl get all,events,networkpolicies,resourcequotas,limitranges \
  -n tenant-<slug> -o yaml > tenant.yaml
kubectl -n tenant-<slug> logs deploy/soctalk-adapter --tail=500 > adapter.log

# Helm-Zustand
helm status -n soctalk-system soctalk-system > helm-system.txt
helm status -n tenant-<slug> tenant-<slug> > helm-tenant.txt

# SocTalk-Version + Lifecycle-Events für den Mandanten
# soctalk-cli debug-bundle war in früheren Entwürfen dokumentiert; nicht implementiert.
# Erfasse die Daten manuell aus den obigen kubectl/helm-Schritten.

tar czf soctalk-debug-$(date +%s).tgz *.yaml *.log *.txt

Prüfe das Tarball auf Kundendaten, bevor du es extern weitergibst. Logs können Warnungs-Auszüge enthalten.

Veröffentlicht unter der Apache-2.0-Lizenz.