Documentation
Everything for installing, configuring and using the ZabFox modules.
Getting Started
Install and enable the Network Topology module in your Zabbix 7.0 LTS or 7.4 environment. No extra server — everything runs in the frontend.
# Into the Zabbix UI modules folder cd /usr/share/zabbix/ui/modules # Unzip release (directory name is mandatory) sudo unzip ~/Downloads/network_topology_v6.zip sudo chown -R root:root network_topology_v6 # Reload PHP-FPM sudo systemctl reload php8.3-fpm
Ready in four steps
network_topology_v6.Dashboard widgets · optional
Three widgets bring the module's data straight onto your dashboard: a topology graph, a health score per host group and a Nagios-style host list. All three use the same data source as the main module — no second service, no extra configuration.
The three widget ZIPs are release assets on GitHub — unzip them into the modules folder:
# Into the Zabbix UI modules folder cd /usr/share/zabbix/ui/modules # Each widget into its OWN folder (-d) — the ZIPs have no top-level folder sudo unzip network_topology_v6_widget.zip -d network_topology_v6_widget sudo unzip network_topology_v6_health_widget.zip -d network_topology_v6_health_widget sudo unzip network_topology_v6_table_widget.zip -d network_topology_v6_table_widget sudo chown -R root:root network_topology_v6_* # reload php-fpm (service name depends on distro/PHP version) sudo systemctl reload php8.3-fpm
Then go to Administration → General → Modules → Scan directory and set the three modules to Enabled. They then appear in the dashboard editor under “Add widget”.
FAQ
Does the module need an extra server?
No. Network Topology runs entirely in the Zabbix frontend as a PHP module — no extra service, no separate server.
Which Zabbix version is supported?
The main module runs on Zabbix 7.0 LTS and 7.4. Only the dashboard widgets require 7.4 — on 7.0 LTS they stay stuck on “Loading…”.
Is ZabFox free and open source?
Yes. The Network Topology module is released under AGPL-3.0 and free to use.
How do I install the module?
Unzip the release into ui/modules/ (folder network_topology_v6), reload php-fpm and enable it under Administration → Modules — about two minutes.
Which views are there?
Four: Technical (force graph), Management (wallboard), Table (host list/pivot) and Geo (Leaflet map) — from the same data.
What’s new in the latest version?
v4.36.0 adds ghost nodes — unmonitored LLDP/CDP neighbours show up as ghost nodes on the map — and a port-to-port weathermap with measured per-link utilisation.
What about devices that don't report topology at all — unmanaged switches, firewalls without LLDP?
It depends on the device, and there are two distinct cases.
An unmanaged switch is usually invisible. It doesn't speak LLDP, but it forwards the frames because it never processes them. So the managed devices on either side see each other and appear directly connected on the map. Topologically that's wrong — but the statement "these two are connected" still holds.
A firewall without LLDP is the more awkward case. Zabbix monitors it, so it shows up as a node — but with no edges. It sits on the map as an island, even though half your traffic passes through it.
How to fill the gaps:
- Host tag
nt:parent=<hostname>— the recommended route. Add a tag on the host naming the device it hangs off, e.g.nt:parent = fw-core. It's a regular Zabbix host tag, so it lives server-side and every user sees it. Designed for carrier relationships (VM→hypervisor, container→node), but works just as well for "this host sits behind that firewall". The failure simulation treats it as a hard dependency: if the parent dies, the child dies — regardless of the network path. - Manual links drawn straight into the map (star mode). Quick for your own view. Caveat: they live in the browser's
localStorage, so they're per user and per device — your colleague won't see them. For documenting a shared topology, the tag is the right tool. - Ghost nodes cover the reverse case: if a neighbour reports a device that isn't monitored in Zabbix at all, it appears as a dashed placeholder. The gap becomes visible instead of disappearing.
Important for the failure simulation: it only knows the edges it has been given. A device that isn't in the graph can't be simulated as a point of failure — and a hand-drawn edge that doesn't match reality will make the simulation confidently wrong. For the paths that actually matter, it's worth checking: are those edges measured, or assumed?