OpenNMS: Manu­elle Erstel­lung von Topo­logy Maps

Seit der OpenNMS Version 1.12 sind die neuen Topo­logy Maps enthalten, die über­wachte Nodes und deren verschie­dene Bezie­hungen zuein­ander darstellen können. Für die Darstel­lung der Bezie­hungen von Nodes ist ein soge­nannter “Topo­logy Provider” notwendig, von denen OpenNMS bereits einige Vari­anten an Bord hat.

  • Enhanced Linkd Topo­logy Provider
  • VmWare Topo­logy Provider

Der Enhanced Linkd Topo­logy Provider zeigt die zwischen den Geräten mit Hilfe verschie­dener Disco­very-Proto­kolle (wie zum Beispiel LLDP, CDP) erkannten Links, während der VmWare Topo­logy Provider die Zuord­nung von Virtu­ellen Maschinen und Datas­tores zu VMware ESX-Servern zeigt.
Neben diesen beiden Topo­logy Provi­dern bietet OpenNMS auch die Möglich­keit, eine Topo­logy Map manuell zu erzeugen. Hierzu wird der “Simple­To­po­lo­gy­Pro­vider” verwendet. Dabei werden die Nodes und die zuge­hö­rigen Links, die später auf der Karte darge­stellt werden sollen, zunächst in einer XML-Datei defi­niert. 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:

  • Defi­ni­tion eines Nodes: vertex
  • Defi­ni­tion eines Links: edge
  • Defi­ni­tion einer Gruppe: group

Defi­ni­tion eines Nodes

Ein <vertex> defi­niert einen Node, der auf der Topo­logy Map darge­stellt 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 Eigen­schaft mittels <id> zunächst eine ID für das Element vergeben werden. Mittels <label> wird die Beschrif­tung defi­niert und <nodeID> gibt die ID des OpenNMS Nodes an, der mit dem Element verbunden ist.

Defi­ni­tion 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.

Zusam­men­fas­sung von Elementen zu einer Gruppe

Mehrere <vertex> Elemente können zu einer Gruppe zusam­men­ge­fasst 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 defi­niert werden. Auch dieses Element benö­tigt eine ID und ein Label. Da der Gruppe kein OpenNMS-Node zuge­ordnet ist, wird der Wert für <nodeID> auf -1 gesetzt. Mittels <member> werden die einzelnen Elemente der Gruppe zuge­ordnet. Bei den einzelnen Elementen der Gruppe wird mit <parent> die ID des Grup­pen­ele­ments angegeben.

Instal­la­tion

Nachdem die XML-Datei defi­niert 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 Topo­lo­gyMap (hier “IT-Services”) sowie die oben defi­nierte XML-Datei ange­geben. Das Skript muss nun einmalig über die Karaf-Konsole im OpenNMS instal­liert werden. Den Zugriff auf die Karaf-Konsole erhält man per SSH-Login auf den OpenNMS mit Port 8101 (Benut­zer­name admin, Pass­wort admin). Dort kann das eben defi­nierte karaf-Skript wie folgt ausge­führt werden:

ssh admin@127.0.0.1 -p 8101
source /etc/opennms/service-map.karaf

Betrachten der neuen Map

Die neu defi­nierte Map ist nun in den Topo­logy Maps beim Aufruf des Menüs “View” unter dem Punkt “IT Services” zu finden. Ändert man das Semantic Zoom­level, so werden die beiden Nodes zur Gruppe DNS zusammengefasst:

Schreibe einen Kommentar

Cookie Einstellungen
Diese Website verwendet Cookies, um die bestmögliche Funktionalität zu gewährleisten. Mehr lesen

Akzeptiere alle Cookies Speichern