Pular para o conteúdo principal

Visao Geral

A plataforma AIOps do ChatCLI gerencia incidentes através de uma máquina de estados bem definida com 6 estados para incidentes e 6 estados para planos de remediação. Entender este ciclo de vida e essencial para operadores que precisam intervir quando a remediação automática falha.

Estados do Incidente

EstadoDescriçãoTerminal?
DetectedAnomalia correlacionada em um incidente, aguardando análiseNão
AnalyzingIA realizando análise de causa raizNão
RemediatingPlano de remediação em execuçãoNão
ResolvedIncidente resolvido com sucessoSim
EscalatedTodas as tentativas automaticas esgotadas — requer intervencao humana (auto-resolve se o recurso recuperar)Semi-terminal
FailedTentativa única falhou sem retry configuradoSim

Fluxo da Máquina de Estados

Detected → Analyzing → Remediating → Resolved
                ↓              ↓
           Escalated      Failed/RolledBack
           (apos max          ↓
            tentativas)  Re-analise (ate 5x)

                         Escalated

                    Auto-resolve se o recurso
                    recuperar (configuravel)

Fase de Deteccao (Detected)

Quando o watcher bridge detecta anomalias, o correlation engine as agrupa em incidentes:
  1. Pontuacao de sinal — cada tipo de sinal tem um peso (OOMKill=40, ErrorRate=30, PodRestart=25, etc.)
  2. Calculo do risk score — agregado de todas as anomalias correlacionadas
  3. Determinacao da severidade — Critical (risk > 80), High (> 60), Medium (> 40), Low (demais)
  4. Geracao do ID do incidente — formato: INC-AAAAMMDD-NNN
  5. Maximo de tentativas de remediação configurado para 5 (padrão, configuravel via Instance aiops.maxRemediationAttempts)

Fase de Análise (Analyzing)

O sistema cria um AIInsight CR para análise via IA. Durante a deteccao, TODOS os runbooks candidatos são injetados no contexto da IA para validacao.
  1. Descoberta de runbooks candidatos (em camadas):
    • Camada 1: Todos os runbooks com SignalType + Severity + ResourceKind
    • Camada 2: Fallback por Severity + ResourceKind
    • Multiplos runbooks podem existir por trigger (causas raiz diferentes geram runbooks diferentes)
  2. IA válida candidatos: O LLM recebe todos os runbooks candidatos e avalia cada um contra a análise de causa raiz atual:
    • RUNBOOK_APPROVED: <nome> → usa aquele runbook específico (caminho rapido)
    • RUNBOOK_REJECTED → ignora todos os candidatos, usa sugestoes da IA ou modo agentico
    • Nenhum dos dois → usa primeiro candidato como default (compatibilidade)
  3. Se não ha candidatos e a IA tem ações sugeridas → gera um novo runbook
  4. Se não ha candidatos e nem ações da IA → entra no Modo Agentico (IA passo-a-passo)
  5. Transiciona para Remediating

Fase de Remediação (Remediating)

O remediation controller executa o plano usando um loop ReAct (Reason-Act-Observe):
  1. Snapshot pre-voo capturado para capacidade de rollback
  2. Para cada acao no plano:
    • OBSERVE — verifica se o recurso já está saudavel (apos a ação anterior). Se sim, para imediatamente sem executar as ações restantes (early exit)
    • ACT — executa a ação com checkpoint
    • Se a ação falha → rollback automático ao estado pre-voo
  3. Verificacao final de saude (polling por até 90 segundos)
  4. Em caso de sucessoResolved + PostMortem gerado
  5. Em caso de falha → rollback automático tentado → re-analise com contexto da falha
Exemplo: plano com 3 ações (AdjustResources + DeletePod + RollbackDeployment)

  Ação 1: AdjustResources → SUCCESS (memory 1Mi → 64Mi)
  Ação 2: OBSERVE → recurso healthy (ReadyReplicas == Desired)
          → EARLY EXIT! Pula DeletePod e RollbackDeployment
          → Evidence: "Resource healthy after 1/3 actions — skipped remaining 2"
Isso evita que ações contraditórias sejam executadas (ex.: AdjustResources seguido de RollbackDeployment que desfaria o ajuste) e reduz o impacto operacional ao mínimo necessario.

Mecanismo de Retry

Quando a remediação falha:
  • Tentativa < MaxAttempts (5): O sistema re-analisa com o contexto da falha injetado, potencialmente selecionando um runbook ou estratégia diferente
  • Todas as tentativas esgotadas: Transiciona para Escalated

Estado Escalated — O Que os Operadores Devem Fazer

Quando um incidente atinge Escalated, o sistema esgotou todas as opções automaticas. Veja o que acontece e o que você precisa fazer: O que o sistema faz automaticamente:
  1. Dispara a EscalationPolicy correspondente a severidade do incidente
  2. Envia notificações para L1 on-call (Slack, PagerDuty, etc.)
  3. Se não houver reconhecimento dentro do timeout configurado, escala para L2, depois L3
  4. Gera eventos de auditoria para compliance
O que os operadores devem fazer:
  1. Reconhecer o incidente (para a progressao da escalacao):
    curl -X POST https://operator:8090/api/v1/incidents/INC-20260319-001/acknowledge \
      -H "X-API-Key: $API_KEY" \
      -d '{"acknowledgedBy": "seu-email@empresa.com"}'
    
  2. Investigar e corrigir o problema manualmente
  3. Resolver o incidente via um dos tres metodos: Metodo 1: REST API (recomendado para automacao/scripts)
    curl -X POST https://operator:8090/api/v1/incidents/INC-20260319-001/resolve \
      -H "X-API-Key: $API_KEY" \
      -d '{"resolution": "Corrigido memory leak no payment-service v2.4.1, hotfix implantado manualmente"}'
    
    Metodo 2: Web Dashboard Navegue até a pagina de detalhes do incidente e clique no botao “Resolve”. Insira a descrição da resolucao no dialogo. Metodo 3: Kubernetes Direto (avancado)
    kubectl patch issue INC-20260319-001 -n production --type=merge \
      -p '{"status":{"state":"Resolved","resolution":"Correcao manual aplicada"}}'
    

Auto-Resolve para Issues Escalados

Quando um incidente atinge Escalated, o sistema continua monitorando o recurso a cada 30 segundos. Se o recurso recuperar (todas as replicas saudaveis), o incidente e automaticamente resolvido com a mensagem:
“Auto-resolved: resource recovered while awaiting human intervention”
Isso cobre os casos onde:
  • Um operador corrige o problema manualmente (kubectl rollout undo, etc.) sem usar a API
  • O recurso se auto-corrige (ex: problema de rede transitorio se resolve)
  • Um pipeline de CI/CD implanta uma correcao enquanto o incidente ainda está aberto
O auto-resolve pode ser desabilitado via Instance CRD: spec.aiops.enableAutoResolve: false

Parâmetros AIOps Configuraveis

Todos os parâmetros de timing e retry são configuraveis via a seção aiops do Instance CRD:
apiVersion: platform.chatcli.io/v1alpha1
kind: Instance
metadata:
  name: chatcli-prod
spec:
  provider: OPENAI
  model: gpt-5.4
  aiops:
    maxRemediationAttempts: 5    # padrão: 5, range: 1-10
    resolutionCooldownMinutes: 10 # padrão: 10, range: 0-120
    dedupTTLMinutes: 60           # padrão: 60, range: 5-1440
    enableAutoResolve: true       # padrão: true
ParâmetroPadrãoDescrição
maxRemediationAttempts5Quantas vezes a IA pode tentar antes de escalar
resolutionCooldownMinutes10Após resolver, quanto tempo suprimir novas anomalias para o mesmo recurso
dedupTTLMinutes60Quanto tempo o cache de dedup do bridge mantem hashes de alertas
enableAutoResolvetrueAuto-resolver issues Escalados quando o recurso recupera
agenticMaxSteps10Steps maximos por tentativa em modo agentico (range: 3-30)
Runbooks auto-gerados pela IA (tanto standard quanto agenticos) herdam automaticamente o valor de maxRemediationAttempts da configuração do Instance. Runbooks criados manualmente via YAML ou API usam o default do CRD (maxAttempts: 3) a menos que especificado explicitamente.

Estados do Plano de Remediação

Cada incidente pode ter multiplos planos de remediação (um por tentativa):
EstadoDescrição
PendingValidacao de segurança em andamento
ExecutingAções sendo executadas sequencialmente
VerifyingVerificacao de saude pos-acao (ate 90s)
CompletedTodas as ações bem-sucedidas e saude verificada
FailedAção falhou, rollback não possível
RolledBackAção falhou, rollback ao estado pre-voo bem-sucedido

Modo de Remediação Agentico

Quando nenhum runbook corresponde, o sistema usa remediação agentica dirigida por IA:
  1. IA propoe uma acao via AgenticStep RPC
  2. Acao e executada e o resultado e observado
  3. IA analisa a observacao e propoe a proxima acao
  4. Loop continua até resolver ou detectar convergencia
Guardrails de seguranca:
  • Max steps: 10 (configuravel via AgenticMaxSteps)
  • Max tempo: 10 minutos por plano agentico
  • Deteccao de convergencia:
    • Ultimas 3 observações identicas → parada forcada
    • Padrão alternante A→B→A→B → parada forcada
    • 5 ações consecutivas falharam → parada forcada

Limiares de Confianca do Decision Engine

O decision engine determina se a remediação pode prosseguir automaticamente:
SeveridadeLimiar de Auto-AprovaçãoAção
LowConfianca ≥ 0.95Auto-execução
MediumConfianca ≥ 0.85Auto-execução + notificação
HighConfianca ≥ 0.80Requer aprovação
CriticalSempreAprovação manual obrigatoria
Ajustes: Taxa de sucesso historico, correspondencia de padrão, hora do dia e contagem de issues ativas modificam o score base de confianca. Circuit breaker: Se 3+ remediações falharam na ultima hora, a auto-remediação e bloqueada inteiramente.

Rollback Engine

O rollback engine fornece redes de segurança em dois níveis:
  1. Snapshot pre-voo — capturado antes de QUALQUER acao. Restaura o estado completo do recurso.
  2. Checkpoints por acao — capturados antes de CADA acao. Permite rollback parcial.
Gatilhos de rollback automatico:
  • Execução da ação falha
  • Verificacao de saude expira (90 segundos)
Alvos de rollback suportados:
  • Deployment: replicas, imagens de container, limites de recursos
  • StatefulSet: replicas, imagens, recursos, partition
  • DaemonSet: imagens, recursos, max unavailable
  • Job/CronJob: suspend, deadline, backoff limit, parallelism
  • Node: uncordon (restaurar schedulable)

Tipos de Ação de Remediação

A plataforma suporta 46+ tipos de ação de remediação entre tipos de recurso:

Deployment (18 ações)

ScaleDeployment, RollbackDeployment, RestartDeployment, PatchConfig, AdjustResources, DeletePod, HelmRollback, ArgoSyncApp, AdjustHPA, RestartStatefulSetPod, CordonNode, DrainNode, ResizePVC, RotateSecret, ExecDiagnostic, UpdateIngress, PatchNetworkPolicy, ApplyManifest

StatefulSet (9 ações)

ScaleStatefulSet, RestartStatefulSet, RollbackStatefulSet, AdjustStatefulSetResources, DeleteStatefulSetPod, ForceDeleteStatefulSetPod, UpdateStatefulSetStrategy, RecreateStatefulSetPVC, PartitionStatefulSetUpdate

DaemonSet (7 ações)

RestartDaemonSet, RollbackDaemonSet, AdjustDaemonSetResources, DeleteDaemonSetPod, UpdateDaemonSetStrategy, PauseDaemonSetRollout, CordonAndDeleteDaemonSetPod

Job (9 ações)

RetryJob, AdjustJobResources, DeleteFailedJob, SuspendJob, ResumeJob, AdjustJobParallelism, AdjustJobDeadline, AdjustJobBackoffLimit, ForceDeleteJobPods

CronJob (10 ações)

SuspendCronJob, ResumeCronJob, TriggerCronJob, AdjustCronJobResources, AdjustCronJobSchedule, AdjustCronJobDeadline, AdjustCronJobHistory, AdjustCronJobConcurrency, DeleteCronJobActiveJobs, ReplaceCronJobTemplate

Sistema de Aprendizado de Runbooks

Node Failure — Fluxo de Remediação

Quando um node apresenta problemas, o watcher detecta a condição e emite anomalias automaticamente:
Node MemoryPressure detectado
  → Anomaly CR criado (signal: memory_high, severity: critical)
    → Issue correlacionada com pods afetados
      → IA analisa: "Node worker-2 com MemoryPressure, pods do echo-app impactados"
        → Remediação: CordonNode (impede novos pods) + DrainNode (evacua pods existentes)
          → Kubernetes re-schedula pods em nodes saudáveis
            → Verificação: pods healthy em novos nodes → Resolved
As ações CordonNode e DrainNode respeitam PodDisruptionBudgets e fazem eviction graceful. O contexto de node (CPU, memoria, pod count, condições) e incluido na análise da IA, permitindo decisões mais precisas. A plataforma constroi uma biblioteca de estrategias aprendidas ao longo do tempo. Cada remediação bem-sucedida gera um runbook reutilizavel que pode ser aplicado a incidentes futuros com a mesma causa raiz.

Como os Runbooks São Nomeados

Nomes de runbooks incluem um hash da análise de causa raiz da IA, garantindo que causas diferentes produzam runbooks diferentes:
auto-{sinal}-{severidade}-{tipo}-{hash}

Exemplos:
  auto-oom-kill-critical-deployment-a3f2b1  (causa: tail /dev/zero)
  auto-oom-kill-critical-deployment-c7d4e9  (causa: memory limit muito baixo)
  auto-pod-not-ready-low-deployment-e8b3d2  (causa: imagem invalida)

Selecao Multi-Runbook

Quando multiplos runbooks correspondem ao mesmo trigger (sinal + severidade + tipo), a IA recebe TODOS os candidatos e seleciona o mais apropriado:
Novo incidente OOMKill em Deployment

3 runbooks candidatos encontrados (causas raiz diferentes)

Todos os 3 injetados no contexto da IA com seus steps e descricoes

IA analisa a causa raiz atual e responde:
  "RUNBOOK_APPROVED: auto-oom-kill-critical-deployment-c7d4e9"
  (porque este incidente e causado por memory limits baixos, correspondendo ao runbook)

Runbook selecionado executado → resolucao rapida sem loop agentico
Se nenhum dos candidatos corresponde a causa raiz atual, a IA responde com RUNBOOK_REJECTED, gera uma nova estratégia do zero, e um novo runbook e criado com hash único — expandindo a biblioteca para incidentes futuros.

Ciclo de Vida do Runbook

EstagioO que Acontece
CriadoAuto-gerado após remediação bem-sucedida pela IA
EncontradoDescoberto por criterios de trigger (sinal + severidade + tipo)
ValidadoIA avalia se o runbook se aplica a causa raiz atual
ExecutadoSteps executados sequencialmente com capacidade de rollback
Biblioteca cresceCada nova causa raiz adiciona um novo runbook a biblioteca
Com o tempo, a plataforma se torna mais rapida e precisa — falhas comuns são resolvidas via runbooks (segundos) em vez de análise completa da IA (minutos).

Geracao de PostMortem

Quando um incidente e resolvido (automaticamente ou manualmente), um PostMortem CR e auto-gerado contendo:
  • Timeline — eventos cronologicos da deteccao a resolucao
  • Analise de causa raiz — gerada por IA com score de confianca
  • Ações executadas — histórico completo de remediação
  • Avaliacao de impacto — pods, servicos e SLOs afetados
  • Licoes aprendidas — recomendações da IA para prevencao
  • Correlacao com Git — deploys recentes que podem ter causado o problema
  • Analise de cascata — incidentes relacionados entre servicos
PostMortems podem ser revisados e fechados via os endpoints Review PostMortem e Close PostMortem.

Integração com SLA

Cada severidade de incidente pode ter uma configuração de SLA:
  • Tempo de resposta — tempo máximo da deteccao até a primeira analise
  • Tempo de resolucao — tempo máximo da deteccao até a resolucao
  • Horario comercial — opcionalmente pausar o relogio do SLA fora do horario comercial
  • Politica de escalacao — disparada automaticamente na violacao do SLA