Five reports, one release. Three of them came with the evidence attached, and
two of the fixes below exist because someone walked their switches and proved
the module wrong.
Nothing to do beyond replacing the files. No new actions, so no rescan. No
template changed either — the LLDP template from 5.3.1 stays as it is. Replace
the module directory, chown, reload php-fpm, and reload the page once with a
cache bypass because the bundle changed.
What you get
Interface counters are found on eight more template families. The lookup
required Octets in the item key and therefore never saw net.if.in[24] —
the shape used by the official Cisco Catalyst 3750V2, Nexus 9000, pfSense and
OPNsense templates and everything derived from them. If your links showed
"estimated from host totals" while the ports were plainly there, this was why.
Neighbours that report a MAC address instead of a name resolve now. Aruba
switches answer the CDP cache with the neighbour's base MAC, and the module cut
that at the first space — which left two hex digits, and every device whose MAC
started with the same byte merged into one ghost node with links to switches
that have nothing to do with each other. MACs are kept whole now, and where the
same port also reports a name over the other protocol, both rows are recognised
as the same cable.
One address on several hosts no longer picks the wrong one. With
192.168.1.10 in every second private network, a service provider with several
tenants on one map got an edge to a foreign tenant, drawn like any other. Now
several candidates mean no edge and a named entry in the LLDP-Q tab.
Two new host tags:
nt:uplink=<host>:<port>for devices that cannot report a neighbour at all —
a UPS, a PDU, a printer. It draws the edge and hangs the counters of that very
port on it: traffic, errors, discards, link speed.nt:lldp=<name>for hosts whose name on the wire differs from their name in
Zabbix. Renamed hosts, an inventory name here against a config name there.
Ghost nodes in three steps: off, network gear only, all. The middle one
keeps switches, routers, access points and anything that says nothing about
itself, and drops what announces itself as a workstation or a phone. On an
access switch with 48 ports the rest of the ghosts are desktops, and they bury
what you turned ghosts on for.
Ghosts stop pretending to be hosts. The detail panel showed a green
"Normal" and empty CPU, memory and ping rows for a device Zabbix never asked;
the tooltip did the same and even fired a history request. Both now say not
monitored and show what is actually known: the protocol, the reporters, the
MAC, the capabilities, the vendor string.
A host named only with digits no longer makes the map a white page. PHP
turns a numeric array key into an int, a string function refused it, the request
died halfway through and the browser reported Unexpected end of JSON input.
Reset and Clear in the filter work. Both looked like a fresh page load, so
the automatic restore of the last selection brought the old groups straight
back. And the cluster toggle shows the mode you picked — it always stored it
correctly, it just kept saying "auto".
Ghost nodes no longer pile up on one spot, they no longer push your saved
arrangement aside, and the layouts finally account for the label instead of the
44-pixel circle.
Thanks
To the four people who reported these, two of them with the walk output that
turned a guess into a diagnosis, and one with screenshots that explained more
than the report did. The full list is in the changelog.
Install
Main module: network_topology.zip. The five widget ZIPs are optional and need
Zabbix 7.4; the main module runs on 7.0 LTS as well — this release was verified
on 7.0.30 and 7.4.14.
Details in CHANGELOG.md and INSTALL.md.