Updating from 5.4.0: replace the directory, and that is all. One action
was added (network.topology.update_check), and the note here first claimed
that makes "Scan directory" mandatory. It does not:
CModuleManager::loadManifest()readsmanifest.jsonfrom disk on every
request, and themoduletable holds only the path, the status and the
config. "Scan directory" is for module directories Zabbix has never seen —
a first install, or one of the five widgets, which are separate modules. If
the new button in the Diag tab should answer "Unknown action" anyway,
Administration → General → Modules → Scan directory is the fallback; it
costs one click and breaks nothing.Then reload the page once with a cache bypass: the bundle and all five
widget scripts changed, and a dashboard will happily serve a cached widget
script. No template changed; layouts, manual links, pins, notes and presets
stay where they are.
Host + hops no longer runs into a gateway timeout
Six hops from one switch reach practically every device on a campus or WAN,
and hop mode had no counterpart to the 100-group cap that group mode has had
for a while. The whole enrichment pipeline — items, last values, triggers,
problems — ran over every host in a single request until nginx gave up with a
504, and the map showed
Unexpected token '<', "<html> <h"... is not valid JSON
The scope is capped at 1000 hosts, nearest first. The search runs outward
ring by ring, so every ring inside the cut is complete and only the outer ones
are missing — and the map says so: "6 hops reach 4213 hosts — only the nearest
1000 are shown. The map is complete up to 3 hops." Hosts you cannot see are
removed before the cap and do not use it up.
Every request says why it failed
No fetch in the module looked at the HTTP status before parsing, so a gateway
timeout, an expired session and a PHP error all arrived as the same parser
error about a < character. All 23 calls in the main module and every fetch in
all five widgets now go through one helper that tells the cases apart: server
unreachable, gateway timeout (with the advice to ask for less), no permission
any more (reload and sign in), another HTTP error by its code, and a web page
where data was expected — quoting how the answer began, because that is the
difference between nginx, the login form and a PHP fatal.
The initial load also shows an {error: …} reply such as Too many requests
instead of drawing an empty map, and the stale badge of the 30 s refresh
names the reason in its tooltip.
"Is there an update?" — a button, never a background call
The Diag tab can ask whether a newer version exists, and it only asks when
someone clicks. A monitoring module that phones home unasked is a trust
problem: plenty of installations forbid outgoing traffic by policy, and an
isolated one would carry a permanent, pointless warning. The click is the
consent — which removes the setting, the cache and the schedule along with it.
What goes out is a bare GET: no parameters, no version, no installation id.
Super admins only. A tag that cannot be read is reported as "not determinable"
rather than guessed at, and a pre-release is never offered to someone running
a final version.
Thanks
@christos-diamantis filed #22 and opened #23 with the fix in the same
minute — the second time in three days that a report arrived with its patch
attached. His branch is the one that shipped: it reaches more call sites than
the version written here in parallel, it carries the helper into the widgets,
and it found an English string sitting in the German language file, which is
precisely the gap no gate in this repository can see.
Install: network_topology.zip is the module (a page under Monitoring →
Network Topology). The five widget ZIPs are optional dashboard tiles and carry
their files without a top-level folder — see INSTALL.md.