home / blog / Network Topology 5.5 — mais rápido, mais curioso, e então tentamos quebrá-lo

Network Topology 5.5 — mais rápido, mais curioso, e então tentamos quebrá-lo

O módulo principal e os cinco widgets de dashboard rodam no Zabbix 7.0 LTS e 7.4. Baixe aqui: github.com/linuser/zabbix-network-topology/releases

A 5.5 não chegou de uma vez — são, na verdade, três releases com três humores diferentes. A 5.5.0 ficou rápida. A 5.5.1 ficou curiosa. A 5.5.2 ficou paranoica. Aqui a versão curta das três.

5.5.0 — três vezes mais rápida (e dá para provar)

Um mapa completo de 1000 hosts, 1425 arestas e 43 200 itens levava antes 4681 ms. Agora leva 1581 ms. Mesmo mapa, os mesmos números na tela — só cerca de um terço da espera.

E não é uma demo com três dispositivos dentro. Subimos um laboratório de 1000 dispositivos SNMP simulados — tabelas de vizinhos LLDP de verdade, contadores de interface, tudo — e medimos contra isso, porque “rápido” só vale no tamanho em que você realmente vai rodar. Cada número acima vem desse ambiente.

A parte divertida é como chegamos lá, porque erramos o palpite três vezes primeiro:

  • “É a construção das arestas, óbvio.” Não — 2 % do tempo.
  • “Então é o tamanho do chunk de SQL.” Aumentamos, rendeu 13 %. Não foi o prêmio.
  • “Tá, vamos buscar menos valores.” Má ideia: esses valores por porta alimentam os totais do host, então “17 portas down” viraria silenciosamente “2”. Um mapa que é rápido e errado é só errado.

O que funcionou de verdade: buscar os mesmos valores, de outro jeito — uma varredura por janela em vez de uma consulta por item. O passo que comia 86 % da carga caiu para um quarto disso. (Escrevemos o novo gargalo no changelog também, para ninguém ter que procurá-lo de novo.)

Ah, e ficou mais fácil de ler: os grupos de hosts agora abrem um nível de cada vez, em vez de despejar mil nós de uma vez, e há um export de cabos para o NetBox — com o efeito colateral agradável de que o NetBox confere cada linha para você, então o primeiro import revela em silêncio onde a sua documentação e a sua rede discordam.

E quando a sua “rede” na verdade são dois ou três sites: escolha os grupos de hosts e o mapa desenha cada um como seu próprio cluster rotulado — com os cabos que cruzam entre eles mantidos visíveis.

Dois grupos de hosts desenhados como clusters rotulados separados — Berlin e München Escolha dois ou mais grupos de hosts e cada um vira seu próprio cluster delimitado; os links entre os sites continuam visíveis. Aqui: Berlin e München.

5.5.1 — mostrar mais, de graça

Tudo que há de novo aqui é construído a partir de dados que o módulo já estava buscando. Nenhum item novo, nenhuma carga extra.

  • Quarenta pontas, um nó. Um switch com uma pilha de estações, telefones e impressoras pendurados nele desenhava antes quarenta nós fantasma miúdos que não diziam nada. Agora eles se dobram em uma bolha “N endpoints” por switch — clique para abrir. Equipamento de rede de verdade (switches, roteadores, APs) nunca é dobrado, então você continua vendo a topologia real.
  • Tráfego e uptime, direto no cabo. Passe o mouse ou clique em um link e você recebe um gráfico RX/TX minúsculo para a porta de cada ponta, além de há quanto tempo o link está de pé. Tudo já estava sendo coletado — só começamos a mostrar.
  • Transformar um fantasma em host. Viu um dispositivo por LLDP/CDP que ainda não está no Zabbix? Transforme-o em host direto do painel, pré-preenchido e colocado exatamente onde ele está no mapa. Sem nome, só um MAC? Procuramos o fabricante para você — e dizemos honestamente quando o MAC é um local inventado, sem fabricante por trás.

As pontas não monitoradas de um switch, dobradas em um nó “N endpoints” Uma pilha de estações, telefones e impressoras vira uma bolha — clique para abrir.

Sparkline RX/TX por porta e uptime do link no painel de detalhes da aresta Clique num cabo e você recebe o tráfego recente da porta de cada ponta, além de há quanto tempo o link está de pé.

Há também uma correção que só pegamos em hardware real: um switch que reporta tudo por LLDP exceto o próprio nome desaparecia antes completamente do mapa. Todo dispositivo falso no nosso laboratório de teste tinha nome — só um de verdade expôs a falha. Agora ele aparece.

5.5.2 — CI verde, e ainda assim não confiamos

Na 5.5.1 todos os dezessete checks de CI estavam verdes. É exatamente aí que você deve ficar nervoso — verde só significa que os testes passam nos testes que você mesmo escreveu. Então apontamos seis revisões separadas ao conjunto todo de uma vez (segurança, backend, frontend, cores, código duplicado, cobertura de testes) e reproduzimos de fato cada problema antes de corrigi-lo.

A boa notícia primeiro: nenhuma brecha de segurança. Tudo que vem do fio é escapado, toda escrita exige todo o ritual de permissão e CSRF, e não dá para enganar a sonda de portas para escanear hosts que você já não consiga ver.

Os achados de verdade foram duas variações do mesmo clássico — desenhar um cabo como dois:

  • Um dispositivo que menciona um vizinho primeiro sem porta, depois com porta recebia duas arestas em vez de uma — e inverter a ordem dava uma. Ou seja, a contagem dependia literalmente da ordem em que o Zabbix devolvia os dados. Corrigido.
  • As arestas falsas — a nuvem da internet e a nova bolha de pontas — estavam sendo contadas e estilizadas como links medidos de verdade. Isso distorcia as estatísticas, pintava por cima da linha grossa da internet, e passar o mouse sobre uma bolha disparava uma consulta de histórico para algo que nem é um host. Tudo resolvido.

Mais uma do modo escuro que nenhum teste pegaria: alguns selos de status tinham texto claro sobre um fundo claro hardcoded — ótimos no modo claro, quase invisíveis no escuro. Corrigidos com cores de tema adequadas.

E então ensinamos as lições aos testes: novos checks para o que antes podia derivar em silêncio — incluindo os nomes de vizinhos LLDP não confiáveis (os dados mais delicados que o módulo toca). Cada correção veio com um teste que falha sem ela.

Pegue já

A 5.5.2 é a atual. Atualizar dentro da 5.5 é “trocar a pasta, recarregar uma vez” — seus arranjos, links, pins e notas ficam todos onde estão. Releases & instalação →

← todos os posts