Skip to content

Solução de problemas

Sintoma → diagnóstico → correção. Runbook para os modos de falha mais comuns.

SintomaPrimeira verificaçãoCorreção
helm install soctalk-system falha no hook de pré-instalaçãokubectl logs -n soctalk-system job/<release>-preinstall-checkInstale o pré-requisito de cluster ausente (CNI, cert-manager, StorageClass) conforme o guia Instalação
Pod da API em CrashLoopBackOff na inicializaçãokubectl logs -n soctalk-system deploy/soctalk-system-apiNa maioria das vezes: Secret DATABASE_URL incorreto, Postgres ainda não pronto ou falha de migração do Alembic. Verifique primeiro o pod do Postgres
helm install tem sucesso, mas a UI do MSSP retorna 502Logs do controlador de ingress; verifique se os endpoints do Service de ingress estão populadosProxy OIDC não implantado ou não injetando headers confiáveis. Verifique o CIDR de trusted-proxy
Criação de tenant retorna 500Os logs da API mostram ProvisionErrorNormalmente helm install tenant-* falhou. Verifique helm status tenant-<slug>. Problemas de namespace e resource-quota são os mais comuns
Tenant travado em provisioning > 15 minkubectl -n tenant-<slug> get events --sort-by=.lastTimestampConsulte Tenant travado em provisioning em operações
Tenant fica degradedLogs do adapter no namespace do tenantEgress de NetworkPolicy, crash do pod do adapter ou DNS mal resolvido
Dados visíveis entre tenantsExecute a suíte de testes de isolamentoIncidente P1. O RLS é a última linha de defesa; uma falha indica um bug de aplicação ou uma má configuração de role do Postgres
Chamadas de LLM falhando para um tenantLogs do worker: procure por 401/403 do provedor de LLMO runs-worker lê de Secret/tenant-llm-key no namespace tenant-<slug>. A fonte autoritativa é IntegrationConfig.llm_api_key_plain no Postgres — rotacione via PATCH /api/mssp/tenants/{id}/llm (UI: detalhe do tenant → Settings → LLM), que reescreve o Secret e reinicia o runs-worker
Agente Wazuh não consegue conectarIP do LB do tenant (ou IP+porta do HAProxy de borda) acessível a partir do host do agente; DNS para <slug>.soc.mssp.* resolve para ele; 1514/1515 abertos através de qualquer firewall intermediárioConsulte Wazuh Ingress. 1514 é o protocolo proprietário do Wazuh — não há SNI para inspecionar; o roteamento é por endereço de destino ou porta. Verifique se o Service do tenant (type: LoadBalancer ou a porta do HAProxy) é o endereço que o agente está mirando
StatefulSet do Postgres não inicia (PVC Pending)kubectl describe pvc -n soctalk-systemSem StorageClass padrão, a classe não suporta RWO, ou o cluster está sem disco
Mensagens de PolicyViolation do controlador de ingressRegras de allow da NetworkPolicyCertifique-se de que o namespace de ingress esteja rotulado com kubernetes.io/metadata.name=ingress-system
Cilium Hubble mostra fluxos DROPPED entre o tenant e soctalk-systemNetworkPolicies + identidades do CiliumPolítica de egress do adapter ausente ou namespaceSelector incorreto
Login de usuário cliente retorna 403 em /api/tenant/*Claims do JWTGaranta que a linha do usuário tenha tenant_id definido e role=customer_viewer
Impersonação de usuário MSSP não aparece na auditoria do clienteConsulta de auditoriaVerifique se a coluna acting_as está populada na escrita; a view de auditoria do cliente faz join em tenant_id = own AND acting_as IS NOT NULL
Teste de isolamento falha na CI (admin com FORCE RLS consegue ver linhas)Migração aplicada?Reexecute alembic upgrade head; garanta que FORCE ROW LEVEL SECURITY esteja aplicado a cada tabela com escopo de tenant
ImagePullBackOff no soctalk-adapter / soctalk-runs-worker do tenantkubectl -n tenant-<slug> describe pod mostra falha de pull para ghcr.io/soctalk/soctalk-adapter:0.1.13-fixes (ou similar)Conhecido: render.py usa por padrão uma tag que pode não estar no ghcr público. Sobrescreva no momento da instalação: defina tenantProvisioning.adapterImageTag: latest e tenantProvisioning.runsWorkerImageTag: latest nos values do soctalk-system. Esses valores são propagados para as env SOCTALK_TENANT_ADAPTER_IMAGE_TAG / SOCTALK_TENANT_RUNS_WORKER_IMAGE_TAG no Deployment da API, que o render de provisioning lê

Coletando bundles de diagnóstico

Ao escalar para o suporte, colete:

bash
# SocTalk system-level state
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
# (V1 chart bundles the orchestrator into the API pod — no separate Deployment)

# Specific tenant
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 state
helm status -n soctalk-system soctalk-system > helm-system.txt
helm status -n tenant-<slug> tenant-<slug> > helm-tenant.txt

# SocTalk version + lifecycle events for the tenant
# soctalk-cli debug-bundle was documented in earlier drafts; not implemented.
# Capture the data by hand from the kubectl/helm steps above.

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

Revise o tarball em busca de dados de clientes antes de compartilhá-lo externamente. Os logs podem conter trechos de alertas.

Publicado sob a Licença Apache 2.0.