Network Topology 5.5.27 — finde jedes Gerät an seinem Port
Hauptmodul und alle fünf Dashboard-Widgets laufen auf Zabbix 7.0 LTS und 7.4. Hier holen: github.com/linuser/zabbix-network-topology/releases
Der 5.5-Post hörte bei 5.5.2 auf — schneller, neugieriger, misstrauisch. Seitdem sind daraus bis 5.5.27 zwei größere Sachen und eine lange Aufräum-Welle geworden. Die Kurzfassung.
Das ganze Modul auf einen Blick: die Karte plus vier weitere Dashboard-Widgets — KPI-Ring, Topology Health Score, Item-Liste und Tabelle.
🔎 An welchem Port hängt das Ding?
Das ist die Frage, die im Support am häufigsten kommt — und die bisher Handarbeit war: auf den Switch, show mac address-table, Bridge-Port, dann der zweite Switch, und am Ende steht man bei fünf Treffern und keiner Antwort. Denn eine MAC steht in der Forwarding-Tabelle jedes Switches auf dem Pfad, bei jedem auf dem Uplink.
Neu in der Werkzeugleiste: ein 🔎 MAC-Knopf. MAC eintippen, Antwort: der Zugangs-Switch und sein Port — der eine Port, auf dem die MAC sitzt und der kein Uplink ist. Das kann dieses Modul und ein generisches Item nicht, weil es aus LLDP schon weiß, welche Ports Switch-zu-Switch gehen.
Zwei Dinge, die uns wichtig waren:
- Es bleibt API-only. Der Finder liest die FDB jedes Switches aus Zabbix (vier
walk[]-Items je Switch, sieheFDB-SETUP.md) — er macht kein eigenes SNMP. Heißt: er funktioniert auch für Switches hinter einem Zabbix-Proxy, die das Frontend nie direkt erreicht. - Es bleibt ehrlich. Statt zu raten listet das Panel jeden Fundort inklusive der Uplinks, mit Zeitstempel (FDB-Einträge altern — „gefunden auf Port 18" ist immer eine Momentaufnahme). Passen mehrere Zugangsports, sagt es „ambiguous" und zeigt alle Kandidaten.
Die Uplink-Erkennung wurde dabei erwachsen: anfangs schätzte sie den Uplink am FDB selbst (ein Port mit vielen MACs), was einen Hypervisor-Port oder einen nachgelagerten Switch falsch einordnet. Jetzt nutzt sie LLDP, wo die Daten da sind — ein Port, dessen Nachbar Bridge- oder Router-Fähigkeit meldet, ist ein Uplink — und fällt nur sonst auf die Heuristik zurück. Das Panel sagt, welche Methode hinter der Antwort stand.
Der 🔎-MAC-Knopf öffnet ein kleines Panel: eine MAC oder IP eintippen, und es nennt den Zugangs-Switch und seinen Port.
Jetzt auch per IP — und sogar per IPv6
Meistens kennt man nicht die MAC, sondern die IP. Also schließt der Finder die Lücke:
- Per IPv4 (ARP). Er löst die IP über die ARP-Tabelle eines Routers/L3-Switches zur MAC auf und läuft dann die normale FDB-Suche — ein
walk[]-Item mit Schlüsselnt.arpauf dem Gateway genügt. Mehrere Router dürfen sie tragen; der jüngste Eintrag gewinnt. Das Panel zeigt, wie die IP aufgelöst wurde und wie frisch der ARP-Eintrag ist. - Per IPv6. Eine Link-Local- oder SLAAC-Adresse trägt ihre MAC in sich (EUI-64, das
ff:fein der Mitte) — die holt der Finder direkt aus der Adresse, ohne SNMP, ohne Item. Jede andere IPv6 (Privacy-Extensions, DHCPv6) läuft über die ND-Tabelle des Routers (nt.nd). Verglichen wird auf der kanonischen Form,fe80::1undfe80:0:0:0:0:0:0:1treffen also denselben Eintrag.
Die ganze IPv6-Logik ist rein und unit-getestet — EUI-64-Extraktion inklusive U/L-Bit-Prüfung, damit eine Privacy-Adresse, die zufällig ff:fe trägt, korrekt in die ND-Tabelle fällt statt eine erfundene MAC zu liefern.
Dazu ein Fix aus der Community: ein nt:lldp-Alias, der als MAC geschrieben war, traf einen Nachbarn nicht, der dieselbe MAC in anderer Schreibweise meldete (AA:BB:… gegen AA BB …). MAC-förmige Aliase werden jetzt kanonisch verglichen — Doppelpunkt, Bindestrich, Cisco-Punkt oder nackt, alles dasselbe Gerät. Sauber gemeldet auf GitHub (#24).
Die Karte zieht auf Zabbix 8 um
Zabbix 8 steht vor der Tür, und sein neues dark-blue-Theme hat unserem Dunkelmodus ein Problem gemacht: der benutzte eine feste GitHub-graue Palette und saß auf dem navy-blauen UI als graue Insel.
Jetzt misst das Modul beim Zeichnen Zabbix’ tatsächliche Hintergrund- und Textfarbe und leitet seine eigenen Töne daraus ab — farbton-erhaltend, also bleibt Grau grau und dark-blue wird navy. Hintergrund, Werkzeugleiste, Canvas, Detail-Panel, Legende, Tooltips, Kontextmenü und das MAC-Panel ziehen mit. Für Zabbix’ High-Contrast-Dunkeltheme wird extra schärfer abgeleitet, damit nichts ins Graue verblasst. Statusfarben (ok/warn/crit) bleiben fest, und schlägt die Messung fehl, gilt die alte feste Palette. Der Hellmodus ist unangetastet.
Dieselbe Karte im dunkelblauen Theme von Zabbix 8 — das adaptive Dunkeltheme nimmt Zabbix’ Hintergrund- und Textfarbe auf, keine graue Insel mehr.
Und dann haben wir aufgeräumt
Zwischen den beiden großen Sachen lief eine Review-Welle (externer Review plus Funde aus dem Feld). Jeder Fund wurde erst reproduziert, dann gefixt, und jeder Fix kam mit einem Test, der ohne ihn fehlschlägt. Die, die man merkt:
- CPU: eine richtige Quelle je Host. Je nach Item-Reihenfolge konnte eine Unterkategorie (7 % user) die echte Gesamtlast (80 %) überstimmen. Jetzt zählt nur die echte Gesamt-CPU — ein ehrliches „—" schlägt eine falsche Zahl.
- Gleichzeitiges Speichern räumt sich nicht mehr gegenseitig weg. Geteilte Links, Positionen und Farbskalen liegen in einer Config; speichern zwei Leute verschiedenes zugleich, wird jetzt zusammengeführt statt überschrieben.
- Datenschutz: die „Was hat sich geändert"-Liste verrät keinen Host mehr, zu dem du den Zugriff verloren hast.
- Datenqualität sichtbar: ein nicht erhobener Wert liest sich jetzt als „? nicht erhoben" statt als gesunder Strich — gleich gezeichnet in Knoten-Panel, Kanten-Panel, Tooltip und Tabelle (gemessen / geschätzt / veraltet / unbekannt).
- Kleinkram, der nervt: Rechtsklick öffnet nicht mehr zusätzlich das Browser-Menü; Label-Kästen sind deckend, der Text bleibt über den Linien lesbar; die Hop-Ansicht stürzt bei einer fehlgeschlagenen Host-Abfrage nicht mehr mit HTTP 500 ab.
Hol’s dir
5.5.27 ist aktuell. Ein Upgrade innerhalb von 5.5 heißt „Ordner tauschen, einmal neu laden" — Anordnungen, Links, Pins und Notizen bleiben, wo sie sind. Der MAC-/IP-/IPv6-Finder ist opt-in: er hat für einen Switch erst Daten, wenn du dessen walk[]-Items angelegt hast, und sagt das auch. Releases & Installation →