Observabilidade no NKPParte 2: NKP Insights
Testado emNKP 2.19NKP Insights 1.9.7CloudNativePG 0.29.0Lab em Em outra versão, confira a matriz de compatibilidade e as release notes antes de aplicar.

Resumo: o NKP Insights é o app do catálogo que analisa o cluster e aponta pontos de atenção de disponibilidade, configuração, boas práticas e segurança, cada um com causa e solução. No management ele subiu em um minuto, porque as dependências já existiam. No workload, subiu em cerca de dois minutos, com o CloudNativePG habilitado antes e o storage Ceph da Parte 1. Em 10 minutos, mostrou os alertas do Prometheus com contexto e ciclo de vida, dentro do Kommander, onde o administrador já trabalha. Em 11 horas, encontrou 204 itens, incluindo auditorias de segurança e o CIS Benchmark. Esta é a parte 2 de 3.
Onde paramos
Na Parte 1, ligamos os logs no cluster de workload e vimos que o Alertmanager, ligado desde o primeiro dia, vem com o destino padrão "null", à espera do destino real de cada ambiente, e que uma regra crítica, o KubeProxyDown, não se aplica a um cluster com Cilium.
| Parte | Tema |
|---|---|
| 1 | Os conceitos e o que o NKP já entrega |
| 2 | NKP Insights: o cluster apontando os próprios pontos de atenção (este post) |
| 3 | OpenTelemetry Operator: traces, métricas e logs de uma aplicação, sem mexer no código |
A pergunta desta parte: um app da própria plataforma consegue transformar esses alertas em algo que alguém lê e resolve?
O que é o NKP Insights
É uma ferramenta de análise da Nutanix que roda dentro do NKP. Ela examina o cluster continuamente e gera insights: achados com severidade, tipo, causa provável e solução sugerida, exibidos no próprio Kommander.
| Característica | No catálogo do NKP 2.19 |
|---|---|
| Versão | 1.9.7 |
| Categoria | Observability |
| Selos | NKP Core Platform e Nutanix Supported |
| Tipos de insight | Availability, Best Practices, Configuration e Security |
| Severidades | Critical, Warning e Notice |
| Estado padrão | Desligado |

A nota da página de detalhes merece atenção: com a configuração padrão, o Insights grava num bucket S3 e espera os apps Rook Ceph e Rook Ceph Cluster habilitados, com espaço suficiente. A alternativa é apontar para o Nutanix Objects ou outro S3.
Como ele está montado
O inventário da Parte 1 já mostrava um detalhe que vale conhecer: a parte central do Insights (nkp-insights-management) roda no management desde a instalação, mesmo com o app desligado. Habilitar o app acrescenta o motor de análise em cada cluster.
| Componente | Papel |
|---|---|
backend | Analisa o cluster e gera os achados |
forwarder | Encaminha os achados |
resolution-cm | Controla o ciclo de vida de cada achado: aberto, silenciado, resolvido |
postgresql | Banco próprio, criado pelo CloudNativePG |
object-store-init | Job que prepara o bucket no Ceph e termina |
auth-server e mgmt-cm | Parte central, só no management |
Um aviso antigo com nome conhecido
Na série do upgrade, o Headlamp mostrou um aviso repetido mais de cem vezes. O objeto era o FederatedSecret nkp-insights-federated-sa-token, que existe em todos os workspaces, com o Insights ligado ou não. Ou seja, ele faz parte dessa parte central que vem instalada de fábrica.
Habilitando no management: um minuto
Objetivo: ter o Insights analisando o cluster de management.
No workspace de management, a tela de Enable lista duas dependências, Prometheus Monitoring e CloudNativePG, e não pede para escolher cluster, porque só existe um. As duas dependências já estavam lá, assim como o Ceph com HEALTH_OK.
$ kubectl -n kommander get pods | grep insightsnkp-insights-backend-deployment-... 1/1 Running 3m59snkp-insights-backend-forwarder-... 1/1 Running 4m14snkp-insights-management-auth-server-... 1/1 Running 30hnkp-insights-management-mgmt-cm-... 1/1 Running 30hnkp-insights-object-store-init-... 0/1 Completed 4m14snkp-insights-postgresql-1 1/1 Running 4m36snkp-insights-resolution-cm-... 1/1 Running 4m14sRepare nas idades: a parte central tinha 30 horas; o resto, 4 minutos. O único evento de aviso foi uma verificação de saúde do forwarder no primeiro segundo, normal durante a subida.
Habilitando no workload: dependências primeiro
Objetivo: o mesmo, no cluster de workload, aplicando a boa prática da Parte 1: dependências antes do app.
Aqui o CloudNativePG não existia. Habilitei ele antes (fica na categoria General do catálogo) e só depois o Insights. No workspace de workload, a tela de Enable pede para escolher o cluster:

Em cerca de dois minutos, o operador do CloudNativePG, o banco do Insights e o motor de análise estavam no ar:
$ kubectl get clusters.postgresql.cnpg.io -ANAME INSTANCES READY STATUSnkp-insights-postgresql 1 1 Cluster in healthy stateO object-store-init usou o Ceph que criamos na Parte 1 para os logs. Sem ele, o Insights ficaria aguardando o bucket, como o Loki na Parte 1.
Ordem que funcionou no workload
- Rook Ceph e Rook Ceph Cluster (já feitos na Parte 1)
- CloudNativePG
- NKP Insights
O que ele encontrou nos primeiros 10 minutos
No management, quatro achados. No workload, três.

| Achado | Management | Workload | Tipo |
|---|---|---|---|
| KubeProxy sumiu do Prometheus | Critical | Critical | Availability |
| CPU throttling no sidecar do Fluentd | Warning (41,9%) | Notice (28,6%) | Availability e Configuration |
Namespace kommander com 100% da cota de nkpclusters | Notice | — | Availability |
| Motor do Insights implantado | Notice | Notice | Availability |
Dois pontos chamam atenção. Primeiro, são os mesmos pontos que o Alertmanager mostrava na Parte 1, mas sem os alertas auxiliares Watchdog e InfoInhibitor, e dentro do Kommander, onde o administrador já trabalha. Segundo, a mesma causa ganhou severidades diferentes: o throttling é Warning no management e Notice no workload, porque o limite foi mais ultrapassado num do que no outro.
Um achado por dentro
O que diferencia o Insights de uma lista de alertas é a página de detalhe. A do throttling do Fluentd:

| Seção | O que mostra |
|---|---|
| Root Cause Analysis | Os limites do container buffer-metrics-sidecar (100m de CPU, 100M de memória), um botão View Metrics e a métrica a acompanhar: container_cpu_cfs_throttled_periods_total |
| Solutions | O componente do NKP afetado (Logging Operator) e onde ajustar: os recursos e os valores do Helm do app |
| Orientação | Quando marcar como Resolved (corrigiu) e quando marcar como Muted (sabe que não afeta) |
| Links | Documentação do Kubernetes sobre requests e limits e do kernel sobre CFS |
O link Headlamp do achado abre direto o StatefulSet do Fluentd. Do aviso ao objeto, em um clique.
O ciclo de vida: Open, Muted e Resolved
O achado da cota de nkpclusters é proposital: o NKP limita um cluster por workspace. É o caso típico para Mute.

Silenciado, ele sai da lista de abertos, mas continua registrado e pode voltar com Unmute. Um achado marcado como Resolved só reaparece se a condição voltar. É o tipo de controle que o Alertmanager sozinho não oferece: lá, ou o alerta está disparando, ou alguém criou uma regra de silêncio com prazo.
Depois de 11 horas: 204 achados
No dia seguinte, o workload tinha 204 achados abertos: 9 Critical, 50 Warning e 145 Notice.

| Origem | Quantos | Exemplos |
|---|---|---|
| Auditoria Polaris (Best Practices e Security) | 35 | Containers rodando como root ou com escalada de privilégio; sem limites de CPU e memória; sem liveness probe; réplica única; Ingress sem TLS |
| CIS Benchmark do Kubernetes (Security) | 165 | 144 aprovados, 8 reprovados, 13 que exigem verificação manual |
| Disponibilidade e configuração | 4 | KubeProxyDown, throttling do Fluentd, motor implantado e um ReplicaSet em crashloop |
O último item merece destaque. Durante o lab da Parte 3, o Collector do OpenTelemetry entrou em crashloop por um ajuste que faltava na configuração que eu escrevi. O Insights registrou o achado cerca de dois minutos depois, antes que eu investigasse.
Boa prática: filtre por severidade e tipo
Dos 204 achados, 145 são Notice, a maioria testes CIS aprovados. Comece filtrando por Critical e Warning e pelo tipo Security; deixe os Notice para uma revisão periódica. É a mesma lição dos alertas da Parte 1: priorizar o que pede ação.
Quanto ele consome
Medido com kubectl top, logo depois da subida:
| Cluster | CPU | Memória | Disco |
|---|---|---|---|
| Workload (motor + banco) | ~18 milicores | ~460 MiB | volume de 8 GiB para o PostgreSQL |
| Management (motor + banco + parte central) | ~27 milicores | ~830 MiB | — |
O backend é o maior consumidor de memória. Para o dimensionamento, some as dependências: o CloudNativePG e, se ainda não existir, o Ceph da Parte 1.
Insights × Alertmanager × Headlamp
| Alertmanager | NKP Insights | Headlamp | |
|---|---|---|---|
| O que é | Roteador de alertas do Prometheus | Análise contínua com causa e solução | Interface web do Kubernetes |
| Origem dos achados | Regras do Prometheus | Regras próprias, Polaris, CIS e métricas | Eventos e estado dos objetos |
| Contexto | Rótulos e um link de runbook | Causa, solução, componente afetado | O objeto e seus eventos |
| Ciclo de vida | Silêncio com prazo | Open, Muted e Resolved | — |
| Notificação externa | Sim, se configurada | Não vi no lab | Não |
| Melhor para | Acordar alguém às 3h | Revisão diária e higiene do cluster | Investigar um objeto |
Eles se complementam: o Insights organiza a revisão diária para quem abre o Kommander, e o Alertmanager, com um destino real configurado, é quem avisa fora dele. No lab, não encontrei uma opção de notificação externa no Insights.
Privacidade, acesso e licença
- Onde ficam os dados: no próprio cluster, no PostgreSQL e no bucket do Ceph. Não fiz uma análise de tráfego de saída; para ambientes regulados, vale confirmar com a Nutanix.
- Quem vê: a tela Insights fica dentro de cada workspace do Kommander e filtra por cluster e projeto, então acompanha o modelo de workspaces e as permissões do NKP.
- Licença: o lab roda NKP Ultimate. Confirme com a Nutanix em qual edição o Insights está disponível antes de incluir numa proposta.
O que aprendi
- A parte central do Insights já vem instalada, mesmo com o app desligado. Habilitar acrescenta o motor de análise em cada cluster.
- No workload, as dependências vêm primeiro: Ceph, CloudNativePG e só então o Insights.
- Em minutos, o Insights mostra os alertas dentro do Kommander, com causa, solução e um link para o objeto.
- Mute e Resolved dão ciclo de vida aos achados, complementando a lista de alertas.
- Volume não é urgência: filtre por severidade e tipo, e comece pelos 9 Critical antes dos 145 Notice.
- Insights e Alertmanager trabalham juntos. O Insights organiza a revisão dentro do Kommander; o Alertmanager, com destino real, avisa fora dele.
Checklist do NKP Insights
- Storage S3 disponível (Rook Ceph Cluster, Nutanix Objects ou outro S3)
- CloudNativePG habilitado no workspace
- Insights habilitado em cada workspace, escolhendo os clusters
- Pods do Insights conferidos (
backend,forwarder,resolution-cm,postgresql) - Achados Critical e Warning revisados no primeiro dia
- Achados propositais marcados como Muted, com justificativa
- Revisão periódica dos achados de Security e Best Practices
- Edição do NKP confirmada com a Nutanix
O que ainda não testei
- Notificação do NKP Insights fora do Kommander. No lab, acompanhei os achados pela tela Insights e não verifiquei um envio externo.
- O tráfego de saída do Insights. Não fiz uma análise de rede; para ambientes regulados, é o próximo passo.
- Outras edições do NKP. O lab roda NKP Ultimate; não testei o Insights em outra edição.
Próxima parte
Na Parte 3, o OpenTelemetry Operator: instrumentar uma aplicação Python sem mexer no código, ver os traces no Jaeger, as métricas no Prometheus e, com um clique, ir do trace até o log.
Referências
Nutanix
- Nutanix Kubernetes Platform Guide 2.19, seção NKP Insights (portal Nutanix)
Projetos e comunidade
Comentários
Os comentários usam o GitHub Discussions; é preciso ter uma conta no GitHub.