Checkmk
to checkmk.com

1. Was ist NagVis?

Im Artikel zu den Monitoring-Grundlagen haben Sie kurz eine Karte einer Netzwerktopologie, basierend auf Parent-Child-Beziehungen gesehen. Verantwortlich für derlei Karten ist NagVis. Die Erweiterung dient zum Visualisieren von beispielsweise Infrastrukturen, Servers, Ports oder Prozessen.

Die Funktionsweise von NagVis ist im Grunde sehr einfach: Checkmk, genauer gesagt Livestatus, liefert als Backend Daten wie zum Beispiel Hosts, Services, Host-Gruppen und Service-Gruppen. Diese Elemente aus Ihrem Monitoring lassen sich als Symbole (icons) auf unterschiedlichen Karten platzieren. Dabei zeigen die dynamischen Symbole den jeweils aktuellen Zustand des oder der Hosts und Services. Detaillierte Informationen werden zudem als Tooltipps geliefert. Und letztlich sind Symbole und sonstige Elemente auch Links zu den Checkmk-Objekten, die sie repräsentieren. Als sonstige Elemente stehen Ihnen zum Beispiel Linien, Leistungsanzeigen (Gadgets) und Container für externe Inhalte zur Verfügung.

Um eine Vorstellung zu bekommen, was sich mit NagVis in Checkmk anstellen lässt, hier drei Beispiele:

  • Geografische Karten zur Verwaltung von Standorten auf Basis von OpenStreetMap.

  • Automatische Topologiekarten aus Parent-Child-Beziehungen.

  • Karten für einzelne Switches oder Server-Räume, um Ports beziehungsweise Hardware im Überblick zu haben.

Sofern Sie Parent-Child-Beziehungen definiert haben, können Sie eine Karte in Checkmk über Monitor > Overview > Parent / Child topology aufrufen. Weitere Schritte sind hier nicht nötig.

monitoring parents

2. NagVis einrichten

NagVis ist komplett in Checkmk integriert und so konfiguriert, dass Sie direkt anfangen können, Elemente aus Ihrem Monitoring in Karten einzubauen.

Um NagVis zu starten, öffnen Sie zunächst den Bereich mit den verfügbaren Snapins für die Seitenleiste über button sidebar add snapin unten in der Seitenleiste. Wählen Sie hier das Snapin NagVis maps aus und starten Sie NagVis anschließend über button view snapin edit.

nagvis snapin nagvis

Bevor Sie eine erste Karte anlegen, sollten Sie einen Blick in die Grundkonfiguration unter Options > General Configuration werfen. Hier finden Sie über 100 Optionen von Grundlagen wie Datumsformat oder Spracheinstellungen, über die Darstellung von Objekten auf Karten, bis hin zur Gewichtung der verfügbaren Host- und Service-Zustände.

nagvis2 general configuration

Auf eine ausführliche Beschreibung der Nutzung und vor allem der Konfigurationsmöglichkeiten von NagVis verzichten wir an dieser Stelle. NagVis hat selbst eine sehr gute, ausführliche Dokumentation, in der auch alle Optionen der Grundkonfiguration beschrieben sind. Im Folgenden beschränken wir uns auf die nötigsten Grundlagen, um mit NagVis einfache, sinnvolle Karten in Checkmk erstellen zu können.

3. Karten erstellen

3.1. Die verschiedenen Kartentypen

NagVis bietet insgesamt fünf verschiedene Kartentypen: Reguläre, dynamische, automatische und interaktive/nicht-interaktive geographische Karten.

  • Die reguläre Karte (regular map) ist der Standardkartentyp. Die Karte kann beliebige Szenarien visualisieren, von Switchports, über Server-Räume, bis hin zu ganzen Infrastrukturen. Die Elemente (Symbole, Linien etc.) werden einzeln aus dem Bestand der Checkmk-Hosts und -Services zur Karte hinzugefügt.

  • Die dynamische Karte (dynamic map) entspricht weitestgehend der regulären, allerdings mit einem gewaltigen Vorteil: Hosts, Services, Host-Gruppen und Service-Gruppen werden hier nicht explizit, sondern über Filter in Form von regulären Ausdrücken angegeben; genauer gesagt in Form gültiger Livestatus-Filter. Somit landen auch neue Hosts und Services sowie jegliche Veränderungen ohne weiteres Zutun in der Karte.

  • Die automatische Karte (automap) haben Sie bereits kennengelernt. Dabei handelt es sich um die anfangs erwähnte Netzwerktopologiekarte, die vollautomatisch aus in Checkmk definierten Parent-Child-Beziehungen erstellt wird.

  • Die geografische Karte (geographical map) ist eine Karte, die mit Kartenmaterial aus dem OpenStreetMap (OSM) Projekt als Hintergrund gerendert werden.

3.2. Eine automatische Karte erstellen

Die schnellste Möglichkeit, eine aussagekräftige Karte zu erstellen, ist die automatische Karte (automap). Erstellen Sie über Options > Manage Maps > Create Map eine neue Karte vom Typ Automap based on parent/child relations. Bei ID tragen Sie den internen Namen myautomap und bei Alias den Namen My Automap für die Anzeige ein.

nagvis2 automap create

Die Karte selbst erscheint sofort im Anzeigebereich und im Snapin NagVis maps ein entsprechender Link. Die spezifischen Einstellungen für die automatische Karte können Sie nun über Edit Map > Map Options > Automap anpassen. Insbesondere der Eintrag render_mode ist interessant, sorgt er doch für das grundlegende Layout der Knoten auf der Karte.

nagvis2 automap options

Zudem können Sie hier die Wurzel der Karte bestimmen - einfacher geht das allerdings über einen Rechtsklick auf ein Symbol in der Karte und den Kontextmenüeintrag Make root.

nagvis2 automap contextmenu

3.3. Eine reguläre Karte erstellen

Die regulären Karten (regular maps) sind die gebräuchlichsten Karten in NagVis. Um die Vorgehensweise und die wichtigsten Elemente von NagVis kennenzulernen, zeigen wir Ihnen, wie Sie eine kleine Karte von einem Server-Rack erstellen. Diese visualisiert einen Hosts auf einem individuellen Hintergrund und warnt optisch und akustisch, sobald der überwachte Host nicht mehr OK ist.

Um die Karte anzulegen, öffnen Sie die Optionen über Options > Manage Maps. Hier vergeben Sie unter Create Map den Namen mymap und den Alias My Map. Als Map Type wählen Sie Regular map und bestätigen dann mit dem Knopf Create.

nagvis2 regularmap create

Als nächstes importieren Sie ein Bild des zu überwachenden Racks als Hintergrund. Dies erledigen Sie über Options > Manage Backgrounds. Wählen Sie die lokale Datei und bestätigen Sie mit dem Knopf Upload.

nagvis2 regularmap upload background

Nun muss das importierte Bild als Hintergrund für die aktuelle Karte gesetzt werden. Rufen Sie dazu die Kartenoptionen über Edit Map > Map Options auf und wechseln Sie zum Reiter Appearance. Aktivieren Sie hier die Option map_image und wählen Sie aus dem Menü das gewünschte Bild. Speichern Sie noch nicht, Sie brauchen noch eine Einstellung aus den Kartenoptionen.

nagvis2 regularmap background

Wechseln Sie zum Reiter Obj. Defaults. Hier können Sie die Option label_show aktivieren. Diese Option sorgt dafür, dass Host- und Service-Symbole auf der Karte mit den jeweiligen Host-/Service-Namen beschriftet werden — ansonsten wären die Symbole nur über ihre Tooltipps zu identifizieren. Speichern Sie diese Einstellungen danach ab.

nagvis2 regularmap show label

Nun wird es Zeit, den Host hinzuzufügen. Klicken Sie dazu auf Edit Map > Add Icon > host und dann mit dem zum Kreuz gewordenen Cursor auf die Stelle der Karte, wo das Host-Symbol platziert werden soll — erst dann öffnet sich der Dialog Create Object. Im Reiter General wählen Sie im Grunde nur den gewünschten Host im Drop-down-Menü bei host_name aus und speichern. Sofern Sie mehrere Checkmk-Instanzen betreiben, können Sie über backend_id auch eine alternative Datenquelle nutzen.

nagvis2 regularmap host create

Das Symbol ist nun auf der Karte platziert und liefert Detailinformationen über einen Tooltipp. Per Klick auf das Symbol gelangen Sie direkt zum Host in Checkmk — alle platzierten Elemente in NagVis sind Links zu ihren Checkmk-Objekten.

nagvis2 regularmap host hover

Um das Symbol verschieben oder bearbeiten zu können, müssen Sie den Bearbeitungsmodus aktivieren. Rufen Sie dazu mit einem Rechtsklick auf das Symbol dessen Kontextmenü auf und wählen Sie Unlock.

nagvis2 regularmap icon menu locked

Nun können Sie das Symbol verschieben oder wieder das Kontextmenü aufrufen. Hier finden Sie nun einige neue Optionen, um das Objekt zu klonen, zu löschen, zu bearbeiten oder ein Problem über Acknowledge direkt von hier aus zu quittieren.

nagvis2 regularmap icon menu unlocked

Um die Bearbeitung des Hosts/Symbols zu beenden, müssen Sie aus dem Kontextmenü noch Lock wählen. Den Bearbeitungsmodus können Sie übrigens über Edit Map > Lock/Unlock all auch für die gesamte Karte ein- und ausschalten.

Sie können die Karte nun mit weiteren Hosts bestücken. Und auch das Hinzufügen von Services, Host-Gruppen und Service-Gruppen funktioniert analog.

Zum Abrunden können Sie die Karte noch so konfigurieren, dass Störungen beim Laden durch einen Warnton und blinkende Host-Symbole signalisiert werden. Rufen Sie dazu Edit Map > Map Options auf und wechseln Sie zum Reiter Events. Aktivieren Sie hier ganz oben event_on_load und setzen Sie ein Häkchen ganz unten bei event_sound, um auch die akustische Warnmeldung zu bekommen.

nagvis2 regularmap events

3.4. Eine geografische Karte erstellen

Geografische Karten gibt es in zwei unterschiedlichen Ausführungen: In der interaktiven Variante handelt es sich um eine verschieb- und zoombare Karte, wie man es von Google Maps & Co. kennt, die automatisch als Hintergrund gesetzt wird. Objekte, die auf derlei Karten platziert werden, finden sich auch auf jeder weiteren Karte desselben Typs. NagVis geht davon aus, dass ein Objekt an einem bestimmten Ort zu finden ist, gleich wie groß der Kartenausschnitt ist. So wäre beispielsweise ein in Hamburg platzierter Host sowohl auf einer Welt- als auch einer Deutschland- oder gar Hamburg-Karte zu sehen.

NagVis sieht die unterschiedlichen Kartenausschnitte und Zoom-Level letztlich nur als Viewports. Viewports können jederzeit als eigene, neue Karte gespeichert werden. Da sich Viewports/Karten ebenfalls als Symbole auf Karten darstellen lassen, können Karten gewissermaßen verschachtelt werden. So könnten Sie beispielsweise eine Deutschlandkarte mit Ihren Abhängigkeiten aufrufen, per Klick in eine detailliertere Ansicht für ein Bundesland wechseln, dann in eine spezifische Niederlassung, dann in einen bestimmten Server-Raum und von dort letztlich zu einer Karte für einen einzelnen Switch.

Im Gegensatz zum manuellen Navigieren in der interaktiven Karte spart das Aufwand und die Karten stehen auch einzeln bereit, beispielsweise, um sie auf unterschiedlichen Monitoren parallel zu verfolgen oder automatisch rotieren zu lassen (mehr dazu später). Auch wichtig: So steht die Zusammenfassung der verbundenen Karte als Tooltipp zur Verfügung. Zudem ist die Nutzung für Dritte intuitiver, da sie sich schlicht durch die Hierarchie klicken können und keine Vorstellung haben müssen, wo sie denn hin zoomen müssten.

Die nicht interaktive geografische Karte muss mit einer CSV-Datei gefüttert werden, die zu rendernde Hosts und Koordinaten enthält. Hier gibt es keine übergreifend vorhandenen Elemente.

In der Nagvis-Dokumentation heißen die interaktiven geografischen Karten Worldmaps und die nicht-interaktiven Varianten Geomaps. Worldmaps sind erst in der Version 1.9 von NagVis hinzugekommen und bislang nur in der englischen Dokumentation erläutert.

Beispiel: Sie erstellen eine interaktive Karte für ganz Deutschland und verknüpfen einen neuen Viewport für Nordrhein-Westfalen (NRW). Eine interaktive geografische Karte, also eine Worldmap, legen Sie über Options > Manage Maps > Create Map an. Als Map Type wählen Sie den Eintrag Geographical Map (interactive). Vergeben Sie auch hier wieder ID (mygeomap) und Alias (My Geographical Map).

nagvis2 geomap create

Stellen Sie anschließend den gewünschten Kartenausschnitt ein, welchen Sie als Gesamtüberblick haben wollen und speichern Sie diese Ansicht über Edit Map > Viewport > Save view.

nagvis2 geomap save view

Zoomen Sie nun soweit in die Karte, bis Sie die gewünschte Ansicht für NRW erreicht haben. Dieses mal speichern Sie die Ansicht über Edit Map > Viewport > Save as new map als neue Karte mygeomap_nrw.

nagvis2 geomap save viewport

Der Alias der Karte wird von der Ursprungskarte übernommen, so dass Sie links in der Navigationsleiste nun zwei Karten namens My Geographical Map haben. Vergeben Sie daher zunächst einen neuen Alias My Geographical Map NRW über Edit Map > Map Options.

nagvis2 geomap vieport alias

Wechseln Sie zur Deutschlandkarte My Geographical Map und fügen Sie die Verknüpfung zur NRW-Karte über Edit Map > Add Icon > Map ein. Im folgenden Dialog Create Object müssen Sie lediglich die Karte mygeomap_nrw im Menü unter map_name festlegen.

nagvis2 geomap map icon create

Anschließend gelangen Sie in der Kartenansicht für Deutschland über einen Klick auf das neue Symbol direkt zur NRW-Karte. Auf die gleiche Art und Weise können Sie noch weitere Karten miteinander verbinden und natürlich auch eine Navigation von der NRW- zurück zur Deutschlandkarte einbauen.

nagvis2 geomap map link

Das eigentliche Befüllen der Karten entspricht dann dem Vorgehen bei anderen Kartentypen auch. Aber denken Sie daran: Alle Objekte, die Sie auf einer der Worldmap-Karten hinzufügen, landen auch auf jeder anderen Worldmap-Karte — da es eben nur unterschiedliche Ansichten auf die echte geografische Verteilung sind.

3.5. Eine dynamische Karte erstellen

Dynamische Karten (dynamic maps) unterscheiden sich von den reguläre Karten wie oben erwähnt durch die Art des Hinzufügens von Elementen. Statt manuell bekommen die dynamische Karten ihre Elemente, also Hosts, Services, Host-Gruppen und Service-Gruppen, dynamisch über Livestatus-Filter zugewiesen. Als Beispiel soll eine Karte automatisch mit den CPU load-Services aller Hosts bestückt werden.

Um eine solche Karte zu erstellen, beginnen Sie wieder mit Options > Manage Maps > Create Map und vergeben ID (mydynamicmap) und Alias (My Dynamic Map).

nagvis2 dynmap create

Öffnen Sie anschließend die Kartenoptionen über Edit Map > Map Options und wechseln Sie zum Reiter Dynmap. Hier aktivieren Sie die Option dynmap_object_types und wählen als Objekttyp die Services.

Der spannende Teil folgt nun in der zweiten Option dynmap_object_filter, wo der Filter für die Services gesetzt wird. Verwenden Sie die einfache Livestatus-Abfrage Filter: description ~ CPU load\n. Damit wird in der Spalte description nach dem String CPU load gesucht. Das \n gehört nicht zum Filter selbst, sondern erzeugt einen Zeilenumbruch, der für die aus dem Filter konstruierte Livestatus-Anfrage benötigt wird.

nagvis2 dynmap options filter

Wenn Sie nun speichern, landen alle CPU load-Services in Ihrem Monitoring als Symbole auf der Karte. Auch neue Objekte im Monitoring, die auf den Filter zutreffen, werden der Karte automatisch hinzugefügt.

nagvis2 dynmap auto icons

In der NagVis-Dokumentation wird auch gezeigt, wie die Konfiguration direkt über die Konfigurationsdateien funktioniert.

Übrigens: Da Sie dynamische Karten über Actions > Export to static map auch als statische Karten speichern können, dienen sie auch als Einstiegshilfe, um statische Karten initial mit sehr vielen Elementen zu bestücken.

4. Karten anpassen

4.1. Linien

NagVis bietet verschiedene Arten von Linien an: Es gibt rein dekorative Linien ohne weitere Funktion unter Edit Map > Add Special > Stateless Line, Linien, die genau wie Symbole Hosts und Services in Ampelfarben visualisieren und die Wetterkartenlinien (weathermap lines). Letztere visualisieren Netzwerkbandbreite in sieben verschiedenen Farben. Um eine solche Wetterkartenlinie zu erstellen, gehen Sie wie folgt vor:

Starten Sie über Edit Map > Add Line > Service und wählen Sie im Dialog Create Object einen Host und eine Netzwerkschnittstelle.

nagvis2 lines create

Wechseln Sie anschließend zum Reiter Appearance und setzen Sie den view_type auf line. Als line_type aktivieren Sie den Eintrag --%+BW-><-%+BW--. Damit werden Linien für Up- und Download inklusive Labels für prozentuale (%) und absolute (BW) Bandbreitennutzung erstellt.

nagvis2 lines line type

Nach dem Speichern finden Sie die erzeugte Linie auf der Karte. Klicken Sie nun auf das Schlosssymbol in der Mitte, können Sie die Anfangspunkte sowie den Mittelpunkt der Linien verschieben.

nagvis2 lines weatherlines

NagVis liefert auch gleich eine fertige Legende mit: Fügen Sie über Edit Map > Add Special > Shape eine sogenannte Form ein, in NagVis schlicht ein Bild. Wählen Sie bei der Option icon aus dem Drop-down-Menü das Bild demo_traffic_load_legend.png.

nagvis2 lines weatherlines result

4.2. Gadgets

Gadgets sind wie Linien und Symbole Visualisierungen auf der Karte. Sie zeigen Performance-Daten in Form von Tachos, Thermometern und ähnlichem an. Folglich sind diese nur für Services verfügbar. Beispielsweise können Sie die Auslastung einer Netzwerkschnittstelle in Form einer Tachoanzeige erzeugen:

Fügen Sie zunächst Ihrer Karte einen Service über Edit Map > Add Icon > Service als Symbol hinzu. Wählen Sie im Reiter General einen Host und als Service eine passende Netzwerkschnittstelle.

Wechseln Sie zum Reiter Appearance und setzen Sie view_type auf gadget. Direkt darunter aktivieren Sie gadget_url. Hier finden Sie einige Darstellungsvarianten, die den Dateien unter ~/share/nagvis/htdocs/userfiles/gadgets/ entsprechen. Für die Tacho-Darstellung wählen Sie hier std_speedometer.php.

nagvis2 gadget speedometer

4.3. Container/Iframes

Eine interessante Möglichkeit, externe Informationen einzublenden, bieten die Container. Hier können Sie einfach eine URL angeben und das Ziel in einem Iframe anzeigen lassen. Als Beispiel soll die Ansicht einer Host-Gruppe dienen, als eingebettete Ansicht auf die reine Tabelle beschränkt.

Fügen Sie Ihrer Karte über Edit Map > Add Special > Container einen Container hinzu. Im Gegensatz zu Host- und Service-Symbolen müssen Sie hier nicht bloß in die Karte klicken, sondern einen Rahmen aufziehen. Sie können diesen später natürlich jederzeit anpassen. Anschließend öffnet sich wieder ein Dialog mit Optionen.

Im Reiter General setzen Sie den view_type auf iframe. Die eigentliche Arbeit steckt in der Option url: Die Basis-URL bekommen Sie über button frameurl auf der Seite der Host-Gruppenansicht. Anschließend müssen noch die Optionen für die eingebettete Ansicht hinzugefügt werden, damit auch wirklich nur die Tabelle selbst angezeigt wird (plus ein wenig Hintergrund). Samt dieser könnte die URL etwa so aussehen:

/mysite/check_mk/view.py?view_name=hostgroups&display_options=tbdezocf

Das genaue Einpassen und Platzieren des Containers erledigen Sie ebenfalls im Reiter General über die Eingabe der Koordinaten sowie der Höhe und Breite. Wenn Sie das Kontextmenü eines Iframe-Containers öffnen wollen, müssen Sie den Mauszeiger direkt über dem Rand platzieren, so dass er seine Form ändert zum Skalieren.

nagvis modify container

4.4. Karten rotieren lassen

Auf der Übersichtsseite von NagVis ist Ihnen vielleicht links unten in der Navigationsleiste der Eintrag Rotations beziehungsweise mittig die Auflistung von Karten unter Rotation Pools aufgefallen. Sie können Karten automatisch in einem beliebigen Intervall rotieren lassen, praktisch beispielsweise für öffentliche Informations-Monitore.

Die Konfiguration nehmen Sie in der NagVis-Konfigurationsdatei ~/etc/nagvis/nagvis.ini.php vor. Öffnen Sie diese Datei und scrollen Sie zu Zeile 448, wo Sie die Rotation pool definitions finden.

Hier benötigen Sie drei Zeilen, um einen Rotation Pool, die zugehörigen Karten und das Intervall zu definieren — im folgenden Beispiel den Pool myrotation mit den Karten mymap1, mymap2 und mymap3 sowie einem Intervall von 30 Sekunden:

~/etc/nagvis/nagvis.ini.php
[rotation_myrotation]
maps="mymap1,mymap2,mymap3"
interval=30
Auf dieser Seite