Skip to main content
Esta receita coloca o K8s Watcher para trabalhar numa aplicação myapp no namespace production, em três montagens:

Opção 1: monitoramento local

1

Confira o acesso ao cluster

O watcher usa ~/.kube/config com o contexto atual (ou --kubeconfig); ele não lê KUBECONFIG.
2

Inicie o watcher

3

Pergunte

Todo prompt leva o status do deployment, pods, eventos, logs de erro recentes, HPA, saúde dos nodes e alertas ativos. O /watch status imprime o estado numa linha.

Ajustes

Vários workloads, outros tipos, métricas Prometheus

Alvos com problema recebem detalhe completo e os saudáveis uma única linha, dentro de maxContextChars. A coleta Prometheus lê os IPs dos pods por HTTP puro, então de um notebook só funciona se a sua rede roteia para os IPs dos pods; do contrário os outros dados continuam chegando e a seção de métricas simplesmente não aparece.

One-shot para handlers de alerta

Cada execução coleta uma vez (até 10 segundos) antes de perguntar, então a resposta reflete o estado atual.

Opção 2: servidor do time com watcher (Helm)

1

Instale o servidor com um watcher

  • server.token é obrigatório: num pod o servidor escuta em todas as interfaces e se recusa a subir sem credencial.
  • O log do servidor chega ao kubectl logs sozinho: num pod o servidor também o escreve no stderr, em linhas JSON. A cópia em arquivo no pod roda a cada 20 MB com 3 backups (logging.*), o que cabe no volume de dados de 200Mi do pod.
  • Um watcher.namespace vazio observa o default. Um namespace diferente do release (production aqui, fora de monitoring) faz o chart criar uma ClusterRole automaticamente. Para vários workloads, ou um StatefulSet, DaemonSet, Job ou CronJob (kind), use watcher.targets num arquivo de valores (veja valores do watcher no Helm).
2

Confira

3

Conecte

O servidor soma o contexto do watcher a todo prompt, então cada pessoa do time só pergunta. CHATCLI_ALLOW_INSECURE=true é necessário porque este servidor é texto puro; para qualquer coisa além de um port-forward ligue o TLS e conecte com --tls --ca-cert.
Para dar um acesso por pessoa, troque para JWTs (security.jwtSecretRef), assim cada chamador tem identidade e bucket de rate limit próprios; veja Autenticação do servidor.

Fluxo de incidente

A comparação funciona dentro de watcher.window (padrão 2 horas). O /watch status nesta sessão consulta o watcher do servidor (K8s Watcher (remote): …). Para scripts contra o servidor:

Opção 3: AIOps autônomo (operator)

O operator provisiona o servidor a partir de uma Instance, lê os alertas do watcher via StreamAlerts e conduz Anomaly → Issue → AIInsight → RemediationPlan. Ele disca o servidor por TLS com uma credencial, então a Instance precisa das duas coisas.
1

Instale o operator

2

Crie os Secrets

Siga Sua primeira Instance para os três Secrets no namespace chatcli: chatcli-api-keys (chave do provedor), chatcli-server-token (chave token) e chatcli-tls (tls.crt, tls.key, ca.crt, válido para chatcli.chatcli.svc.cluster.local).
3

Crie a Instance com watcher

Sem server.token (ou outra credencial) o operator não cria o Deployment (AuthenticationConfigured=False); sem TLS ele não alcança o servidor (ServerReachable=False). namespace é obrigatório em todo alvo. O pipeline usa a primeira Instance pronta do cluster.
4

Acompanhe o pipeline

Um pod em crash loop dispara HighRestartCount (e OOMKilled quando essa é a causa); o operator registra uma Anomaly, correlaciona numa Issue, pede uma análise ao servidor (AnalyzeIssue) e remedia a partir de um Runbook compatível, de ações sugeridas pela IA ou de um loop agêntico observar-decidir-agir (AgenticStep, até spec.aiops.agenticMaxSteps, padrão 10). O fluxo completo, as aprovações e os limites de segurança estão em Plataforma AIOps.
5

(Opcional) Adicione um Runbook

Um Runbook manual que casa com a Issue é usado antes das ações geradas pela IA.

Solução de problemas

Checklist

  • Acesso via kubectl e RBAC para pods, pods/log, events, workloads
  • Local (chatcli watch) ou compartilhado (chatcli server / Helm watcher.*)
  • Alvo único (--deployment) ou targets.yaml (--config / --watch-config)
  • metricsPort e metricsFilter opcionais para a coleta Prometheus
  • Intervalo e janela adequados ao cenário; maxContextChars para muitos alvos
  • Servidor: credencial definida, TLS antes de expor
  • Teste: “O deployment está saudável?”