home / blog / Network Topology 5.5.27 — encontre cada dispositivo na sua porta

Network Topology 5.5.27 — encontre cada dispositivo na sua porta

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

O post da 5.5 parou na 5.5.2 — mais rápido, mais curioso, desconfiado. Desde então cresceu até a 5.5.27: duas coisas maiores e uma longa onda de limpeza. A versão curta.

Network Topology como dashboard — mapa, KPI, health score, lista de itens e tabela lado a lado O módulo inteiro num relance: o mapa mais quatro widgets de dashboard — um anel de KPI, o Topology Health Score, uma lista de itens e a tabela.

🔎 Em que porta está essa coisa?

É a pergunta que o suporte mais ouve — e que até agora era trabalho manual: entrar no switch, show mac address-table, porta de bridge, depois o segundo switch, e no fim você tem cinco resultados e nenhuma resposta. Porque um MAC está na tabela de encaminhamento de todos os switches no caminho, na porta de uplink de cada um.

Novo na barra de ferramentas: um botão 🔎 MAC. Digite um MAC e a resposta é o switch de acesso e a sua porta — a única porta onde o MAC está e que não é um uplink. Este módulo consegue o que um item genérico não consegue, porque já sabe pelo LLDP quais portas vão switch-a-switch.

Duas coisas que nos importaram:

  • Continua só por API. O localizador lê a FDB de cada switch a partir do Zabbix (quatro itens walk[] por switch, veja FDB-SETUP.md) — ele não faz SNMP próprio. Ou seja, também funciona para switches atrás de um proxy Zabbix que o frontend nunca alcança diretamente.
  • Continua honesto. Em vez de adivinhar, o painel lista todos os locais, incluindo os uplinks, com data/hora (entradas de FDB envelhecem — “encontrado na porta 18” é sempre um instantâneo). Se várias portas de acesso coincidem, ele diz “ambíguo” e mostra todos os candidatos.

A deteção de uplink amadureceu pelo caminho: no início estimava o uplink pela própria FDB (uma porta com muitos MACs), o que interpreta mal uma porta de hypervisor ou um switch a jusante. Agora usa LLDP onde há dados — uma porta cujo vizinho anuncia capacidade de Bridge ou Router é um uplink — e só recorre à heurística caso contrário. O painel diz qual método esteve por trás da resposta.

O painel “Find a MAC or IP” na barra de ferramentas do mapa de topologia O botão 🔎 MAC abre um pequeno painel: digite um MAC ou um IP, e ele indica o switch de acesso e a sua porta.

Agora também por IP — e até por IPv6

Na maioria das vezes não se sabe o MAC, sabe-se o IP. Então o localizador fecha a lacuna:

  • Por IPv4 (ARP). Resolve o IP para um MAC através da tabela ARP de um router/switch L3 e depois faz a busca normal na FDB — basta um item walk[] com a chave nt.arp no gateway. Vários routers podem tê-la; a entrada mais recente vence. O painel mostra como o IP foi resolvido e quão fresca está a entrada ARP.
  • Por IPv6. Um endereço link-local ou SLAAC carrega o seu MAC dentro de si (EUI-64, o ff:fe no meio) — o localizador extrai-o diretamente do endereço, sem SNMP, sem item. Qualquer outro IPv6 (privacy extensions, DHCPv6) resolve-se pela tabela ND do router (nt.nd). A comparação é feita na forma canónica, por isso fe80::1 e fe80:0:0:0:0:0:0:1 atingem a mesma entrada.

Toda a lógica de IPv6 é pura e testada por unidade — extração EUI-64 incluindo a verificação do bit U/L, para que um endereço de privacidade que por acaso carregue ff:fe caia corretamente na tabela ND em vez de produzir um MAC inventado.

Além disso, uma correção vinda da comunidade: um alias nt:lldp escrito como MAC não correspondia a um vizinho que reportava o mesmo MAC noutra notação (AA:BB:… vs AA BB …). Aliases em forma de MAC são agora comparados canonicamente — dois-pontos, hífen, notação Cisco com pontos ou nu, tudo o mesmo dispositivo. Reportado de forma clara no GitHub (#24).

O mapa muda-se para o Zabbix 8

O Zabbix 8 está à porta, e o seu novo tema dark-blue deu um problema ao nosso modo escuro: ele usava uma paleta cinzenta fixa estilo GitHub e ficava sobre a interface azul-marinho como uma ilha cinzenta.

Agora o módulo mede a cor real de fundo e de texto do Zabbix ao renderizar e deriva os seus próprios tons a partir delas — preservando o matiz, por isso cinzento continua cinzento e dark-blue torna-se azul-marinho. Fundo, barra de ferramentas, canvas, painel de detalhes, legenda, tooltips, menu de contexto e o painel MAC acompanham. Para o tema escuro de alto contraste do Zabbix a derivação é mais nítida, para que nada desvaneça para cinzento. As cores de estado (ok/warn/crit) permanecem fixas, e se a medição falhar aplica-se a paleta estática antiga. O modo claro fica intocado.

O mapa de topologia no modo escuro sobre um tema Zabbix azul-marinho O mesmo mapa no tema dark-blue do Zabbix 8 — o modo escuro adaptativo adota a cor de fundo e de texto do Zabbix, sem ilha cinzenta.

E depois arrumámos a casa

Entre as duas coisas grandes correu uma onda de revisões (uma revisão externa mais achados do terreno). Cada achado foi primeiro reproduzido, depois corrigido, e cada correção veio com um teste que falha sem ela. Os que se notam:

  • CPU: uma fonte correta por host. Dependendo da ordem dos itens, uma subcategoria (7 % user) podia vencer a carga total real (80 %). Agora conta apenas a CPU total real — um “—” honesto vence um número errado.
  • Gravações concorrentes já não se sobrescrevem. Links partilhados, posições e escalas de cor vivem numa só config; se duas pessoas gravam coisas diferentes ao mesmo tempo, agora faz merge em vez de sobrescrever.
  • Privacidade: a lista “o que mudou” já não revela um host a que você perdeu o acesso.
  • Qualidade de dados visível: um valor não coletado agora lê-se como “? não coletado” em vez de um traço saudável — desenhado da mesma forma no painel do nó, no painel da aresta, no tooltip e na tabela (medido / estimado / obsoleto / desconhecido).
  • As pequenas coisas que incomodam: o clique com o botão direito já não abre também o menu do navegador; as caixas de rótulo são opacas para que o texto fique legível sobre as linhas; a vista de hops já não falha com HTTP 500 numa consulta de host malsucedida.

Obtenha

A 5.5.27 é a atual. Atualizar dentro da 5.5 significa “trocar a pasta, recarregar uma vez” — layouts, links, pins e notas ficam todos onde estão. O localizador MAC/IP/IPv6 é opt-in: não tem dados para um switch até você adicionar os seus itens walk[], e avisa isso. Releases & instalação →

← todos os posts