POTHIEDU Não Decore a Resposta. Entenda o Caminho

Centopeia Colorida

Centopeia Colorida

O que é e como funciona a centopeia colorida

A centopeia colorida é uma técnica de mapeamento de rede que divide os nós em camadas visuais baseadas em atributos específicos — tipo latência, carga ou região geográfica. Não é nada de outro mundo, só uma forma de tornar o tráfego mais legível. O nome vem do padrão de cores que se repete em faixas horizontais, parecendo mesmo uma centopeia. Eu comecei a usar isso há uns dois anos quando o dashboard da nossa equipa de rede ficou impossível de seguir. Tinham sido 47 microsegmentos e eu precisava de ver num relance onde é que o bottleneck estava. A solução passou por criar um script Python simples que lia os dados do Prometheus e gerava um mapa de calor com a biblioteca matplotlib, aplicando cores por faixa de latência. Depois exportei para SVG e meti dentro do Grafana.

Como montar a tua centopeia colorida

Começa por reunir os dados. O ideal é ter pelo menos um campo de latência (p95 ou media), um de carga percentual, e um identificador de segmento. Se estiveres a usar Kubernetes, o kube-state-metrics já te dá boa parte disso. Se for infra on-prem, o NetFlow ou sFlow funciona bem. Depois, o passo mais importante é definir a paleta de cores. Não uses o gradiente padrão do matplotlib — o vermelho a amarelo a verde parece bonito mas é problemático. Vais ter gente daltónica na equipa e o azul-verde é muito mais seguro. Eu uso esta sequência:

  • Verde escuro: latência abaixo dos 50ms
  • Verde claro: 50 a 150ms
  • Amarelo: 150 a 300ms
  • Laranja: 300 a 500ms
  • Vermelho: acima de 500ms

O código base é simples. Usa pandas para limpar os dados, depois seaborn para o mapa de calor. A parte chata é alinharmos os eixos — o problema é que os segmentos não vêm ordenados e acabas com faixas misturadas. A solução que encontrei foi ordenar primeiro por região, depois por latência média dentro de cada região. Assim as faixas ficam coerentes e a visualização faz sentido. Um ponto que muita gente perde: a escala de cores deve ser ajustada por janela temporal, não absoluta. Se ontem tiveste uma pico de 800ms e hoje estás normal, a escala absoluta vai mostrar tudo a verde e perdes a sensibilidade. Usa uma escala relativa aos últimos 7 dias. Isso evita o efeito de saturação.

Brinquedo Centopeia Colorida Estica E Aperta C/ Luz- Castela | MercadoLivre
Brinquedo Centopeia Colorida Estica E Aperta C/ Luz- Castela | MercadoLivre

Pegadinhas que eu já cai

A primeira vez que implementei isto, meti tudo num único gráfico sem considerar a densidade de dados. Tinham sido 120 segmentos e o resultado ficou tão carregado que não se via nada. A solução foi dividir por região geográfica — cada mapa com no máximo 20 segmentos. Ficou muito mais limpo. O outro erro foi não tratar valores outlier. Um único segmento com latência de 5 segundos ia esticar a escala e fazer o resto parecer melhor do que era. Filtrei usando interquartis — qualquer valor acima do quartil 95 é marcado a cinza em vez de vermelho. Assim sabes que é anomalia e não padrão. Também descobri que o formato SVG é melhor que PNG para isto. Podes fazer zoom infinito sem perder qualidade e o tamanho do ficheiro é ridículo — uns 50KB contra 2MB de um PNG equivalente. Útil quando tens de partilhar em Slack ou inserir em documentos.

Limitações reais

Não rés tudo. A centopeia colorida funciona bem para monitorização estática, mas se a tua rede muda frequentemente — tipo auto-scaling a cada 30 segundos — o mapa fica desatualizado antes de carregares a página. Nesse caso, prefere um painel interativo com drill-down em vez de uma imagem estática. Também não substitui alertas automatizados. Isto é para visão geral, não para detetar problemas em tempo real. Eu tenho isto a correr em paralelo com alertas de PagerDuty, e uso o mapa só nas reuniões diárias de ops. Se quiseres começar, o repositório com o script base está no GitHub — procura por "centopeia colorida monitoring". Está em Python 3.10, depende de pandas, seaborn e matplotlib. Leva uns 15 minutos a configurar se tiveres os dados prontos.

Outra alternativa se não quiseres programar: o Grafana tem plugins de heatmap que fazem algo semelhante, mas a personalização é limitada. A vantagem da abordagem customizada é poderes ajustar a paleta, a ordenação e os filtros exatamente como precisas. O trabalho todo costuma levar entre 2 a 3 horas na primeira vez — coleta de dados, limpeza, ajuste de paleta, teste com dados reais. Depois, manter é questão de atualizar o query e regenerar. Num setup simples, consigo gerar um novo mapa em menos de 3 minutos.

Centopeia Colorida | PDF
Centopeia Colorida | PDF