Seit der OpenNMS Version 1.12 sind die neuen Topology Maps enthalten, die überwachte Nodes und deren verschiedene Beziehungen zueinander darstellen können. Für die Darstellung der Beziehungen von Nodes ist ein sogenannter „Topology Provider“ notwendig, von denen OpenNMS bereits einige Varianten an Bord hat.
- Enhanced Linkd Topology Provider
- VmWare Topology Provider
Der Enhanced Linkd Topology Provider zeigt die zwischen den Geräten mit Hilfe verschiedener Discovery-Protokolle (wie zum Beispiel LLDP, CDP) erkannten Links, während der VmWare Topology Provider die Zuordnung von Virtuellen Maschinen und Datastores zu VMware ESX-Servern zeigt.
Neben diesen beiden Topology Providern bietet OpenNMS auch die Möglichkeit, eine Topology Map manuell zu erzeugen. Hierzu wird der „SimpleTopologyProvider“ verwendet. Dabei werden die Nodes und die zugehörigen Links, die später auf der Karte dargestellt werden sollen, zunächst in einer XML-Datei definiert. Ein Beispiel:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <graph namespace="nodes"> <!-- Service DNS --> <vertex> <id>1</id> <label>dns1</label> <locked>false</locked> <nodeID>4</nodeID> <ipAddr>8.8.8.8</ipAddr> <selected>false</selected> <parent>1000</parent> </vertex> <vertex> <id>2</id> <label>dns2</label> <locked>false</locked> <nodeID>3</nodeID> <ipAddr>8.8.4.4</ipAddr> <selected>false</selected> <parent>1000</parent> </vertex> <edge> <id>100</id> <source>1</source> <target>2</target> </edge> <group> <iconKey>linkd:group</iconKey> <id>1000</id> <label>Group DNS</label> <locked>false</locked> <nodeID>-1</nodeID> <selected>false</selected> <members>1</members> <members>2</members> </group> </graph>
Aufbau der XML-Datei
In der XML-Datei werden folgende Elemente verwendet:
- Definition eines Nodes: vertex
- Definition eines Links: edge
- Definition einer Gruppe: group
Definition eines Nodes
Ein <vertex> definiert einen Node, der auf der Topology Map dargestellt wird:
<vertex> <id>1</id> <label>dns1</label> <locked>false</locked> <nodeID>4</nodeID> <ipAddr>8.8.8.8</ipAddr> <selected>false</selected> <parent>1000</parent> </vertex>
Dabei muss als Eigenschaft mittels <id> zunächst eine ID für das Element vergeben werden. Mittels <label> wird die Beschriftung definiert und <nodeID> gibt die ID des OpenNMS Nodes an, der mit dem Element verbunden ist.
Definition eines Links
Ein Link zwischen zwei Elementen wird mit Hilfe von <edge> definiert:
<edge> <id>100</id> <source>1</source> <target>2</target> </edge>
Auch hier wird zunächst wieder eine ID vergeben. Mittels <source> und <target> werden jeweils die IDs der beiden Endpunkte für den Link angegeben.
Zusammenfassung von Elementen zu einer Gruppe
Mehrere <vertex> Elemente können zu einer Gruppe zusammengefasst werden:
<group> <iconKey>linkd:group</iconKey> <id>1000</id> <label>Group DNS</label> <locked>false</locked> <nodeID>-1</nodeID> <selected>false</selected> <members>1</members> <members>2</members> </group> <vertex> <id>1</id> <label>dns1</label> <locked>false</locked> <nodeID>4</nodeID> <ipAddr>8.8.8.8</ipAddr> <selected>false</selected> <parent>1000</parent> </vertex> [...]
Dabei muss ein <group> Element definiert werden. Auch dieses Element benötigt eine ID und ein Label. Da der Gruppe kein OpenNMS-Node zugeordnet ist, wird der Wert für <nodeID> auf -1 gesetzt. Mittels <member> werden die einzelnen Elemente der Gruppe zugeordnet. Bei den einzelnen Elementen der Gruppe wird mit <parent> die ID des Gruppenelements angegeben.
Installation
Nachdem die XML-Datei definiert wurde, muss ein kleines karaf-Script geschrieben werden:
config:edit org.opennms.features.topology.plugins.topo.simple-simple config:propset label 'IT Services' config:propset topologyLocation file:///etc/opennms/service-map.xml config:update
Hier wird ein Name für die TopologyMap (hier „IT-Services“) sowie die oben definierte XML-Datei angegeben. Das Skript muss nun einmalig über die Karaf-Konsole im OpenNMS installiert werden. Den Zugriff auf die Karaf-Konsole erhält man per SSH-Login auf den OpenNMS mit Port 8101 (Benutzername admin, Passwort admin). Dort kann das eben definierte karaf-Skript wie folgt ausgeführt werden:
ssh admin@127.0.0.1 -p 8101 source /etc/opennms/service-map.karaf
Betrachten der neuen Map
Die neu definierte Map ist nun in den Topology Maps beim Aufruf des Menüs „View“ unter dem Punkt „IT Services“ zu finden. Ändert man das Semantic Zoomlevel, so werden die beiden Nodes zur Gruppe DNS zusammengefasst: