Arquitetura
- Single-Target (legado)
- Multi-Target (atual)
ResourceWatcher possui seus próprios collectors (incluindo PrometheusCollector opcional) e todos compartilham um único clientset Kubernetes, minimizando conexões.
Modos de Uso
- Recurso Único
- Múltiplos Recursos (YAML)
- Servidor com Watcher
Arquivo de Configuração Multi-Target
Campos do Target
Flags Completas
chatcli watch
chatcli server (flags do watcher)
O que e Coletado
Collectors por Target
Node Health Collector
ONodeCollector monitora automaticamente a saude dos nodes onde os pods do target estão rodando:
- Descobre nodes — via label selector dos pods do target, identifica em quais nodes eles estão schedulados
- Coleta condições — todas as 5 condições oficiais do Kubernetes (
Ready,DiskPressure,MemoryPressure,PIDPressure,NetworkUnavailable) - Coleta métricas — CPU e memória do node via metrics-server (quando disponível)
- Pod capacity — conta pods ativos vs capacidade máxima do node
- Cordoned — detecta nodes marcados como
unschedulable
O contexto do node e incluido no summary enviado ao LLM, permitindo que a IA correlacione problemas de pod com infraestrutura:
Prometheus Collector (Novo)
OPrometheusCollector scrapa métricas Prometheus diretamente dos pods:
- Descobre pods do deployment e seleciona 1 pod Ready
- Faz HTTP GET em
http://podIP:port/path(timeout: 5s) - Parseia o formato Prometheus text exposition (stdlib, sem dependências)
- Filtra por glob patterns configurados
- Ignora NaN, Inf e linhas de comentario
Gestão de Budget de Contexto (MultiSummarizer)
Com múltiplos targets, o MultiSummarizer garante que o contexto não estoure a janela do LLM:Algoritmo
1
Pontua cada target
0 = healthy, 1 = warning, 2 = critical- Critical: CrashLoopBackOff, OOMKilled, alerts criticos
- Warning: replicas < desired, error logs, alerts warning
- Healthy: tudo ok
2
Ordena por prioridade
Critical primeiro, depois warning, depois healthy.
3
Aloca contexto
- Score >= 1 — contexto completo (~1-3 KB por target)
- Score == 0 — one-liner compacto (~80 chars por target)
4
Comprime se excede maxContextChars
Comprime targets saudáveis primeiro.
5
Omite se ainda excede
Omite targets saudáveis quando necessário.
Exemplo com 20 Targets (2 com problemas)
Detecção de Anomalias
Os alertas são incluidos no contexto enviado ao LLM e influenciam a prioridade de budget do MultiSummarizer.
Observability Store
Os dados coletados são armazenados em um ring buffer por target com janela temporal configurável:- Snapshots: Estado completo periodico (pods, deployment, HPA, events, metrics, app metrics)
- Logs: Logs recentes de cada pod com classificação (info/warning/error)
- Alertas: Anomalias detectadas com severidade e timestamps
Rotação Automática
Dados mais antigos que a janela temporal (--window) são automaticamente descartados, mantendo o uso de memória constante independente do número de targets.
Comando /watch
Dentro do ChatCLI interativo (local ou remoto), use /watch para ver o estado:
- Single-Target
- Multi-Target
One-Shot com Contexto K8s
Exemplos de Perguntas
Requisitos
- Kubernetes Cluster: Acesso via kubeconfig ou in-cluster config
- Permissões RBAC: Leitura de pods, eventos, logs, deployments, HPA, ingresses
- metrics-server (opcional): Para coleta de CPU/memória
- Prometheus endpoints (opcional): Apps que expoe
/metricsno formato Prometheus text
RBAC
- Single-namespace (Role + RoleBinding)
- Multi-namespace (ClusterRoleBinding + ClusterRole compartilhada)
Integração com AIOps
Os alertas do K8s Watcher alimentam automaticamente o pipeline AIOps do Operator. Quando o Operator detecta alertas viaGetAlerts RPC, ele cria Anomaly CRs que são correlacionados em Issues, analisados por IA e remediados automaticamente.
A partir da v2 da plataforma AIOps, os alertas do Watcher também alimentam:
- NotificationPolicy para roteamento automático para Slack, PagerDuty, OpsGenie, Email, Webhook e Teams
- ApprovalPolicy para gate de aprovação antes de remediações em produção
- ServiceLevelObjective para cálculo de burn rate e error budget
- NoiseReducer para supressão de alertas repetitivos, sazonais e flapping
Próximo Passo
Modo Servidor
Configurar o servidor com watcher
K8s Operator
K8s Operator (AIOps)
AIOps Platform
AIOps Platform (deep-dive)
Deploy no Kubernetes
Deploy no Kubernetes