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.
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, vejaFDB-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 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 chavent.arpno 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:feno 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 issofe80::1efe80:0:0:0:0:0:0:1atingem 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 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 →