Tutonaut
check_mk business intelligence
Das Ergebnis: Zwei Backup-Server mit diversen Backup-Services werden als redundantes System überwacht.

Checkmk Schritt für Schritt: Business-Intelligence-Logik aufbauen

Mit dem BI-Modul von Checkmk könnt Ihr Anwendungen, die aus mehreren Hosts und Services bestehen, als Ganzes monitoren. Etwa ein redundantes Backup-System.

Mit Checkmk könnt Ihr nicht nur einzelne Hosts und Services überwachen, sondern auch ganze Geschäftsanwendungen abbilden. Beispielsweise könnte die Anwendung „Backup“ aus mehreren redundanten Services auf mehreren redundanten Hosts bestehen. Fällt dort ein Service oder gar ein Host aus, interessiert das den Admin – nicht aber unbedingt die Anzugträger. Schließlich funktionieren Backups ja noch. Im Folgenden seht Ihr Schritt für Schritt, wie Ihr ein solches BI-Objekt aufsetzt.

Vorbereitung und Ziel

Wie immer in unserer Checkmk-Serie: Ihr findet hier keine tiefgehenden Erklärungen zu jeder erdenklichen Option oder der Gesamtsystematik, sondern schlicht die nötigen Schritte, um das Ziel zu erreichen. Das Ziel: Zwei Backupserver mit jeweils mehreren Backupdiensten sollen als eine Anwendung überwacht werden.

check_mk business intelligence
Das Ergebnis: Diverse Backup-Server mit diversen Backup-Services werden als redundantes System überwacht.

Wenn Ihr das Beispiel 1:1 nachbauen wollt, benötigt Ihr dazu vorab den Host backup1 mit den Services backupdienst1 und backupdienst2 sowie den Host backup2 mit den Services backupdienst1 und backupdienst3. Klont einfach Euren localhost und benennt die Klone entsprechend.

Die Dienste könnt Ihr ganz einfach über Local Checks realisieren: Die Anleitung dazu gibt’s hier. Die Kurzversion: Legt auf Eurem localhost ein Skript beliebigen Namens unter /usr/lib/check_mk_agent/local beziehungsweise C:\Program Files (x86)\check_mk\local mit folgendem Inhalt an:

echo 0 backupdienst1 - Backup1 ist in Ordnung.
echo 1 backupdienst2 - Backup2 ist in Ordnung.
echo 0 backupdienst3 - Backup3 ist in Ordnung.

Dadurch werden auf den localhost-Klonen neue Services verfügbar. Fügt bei backup1 die ersten beiden und bei backup2 ersten und dritten Service dem Monitoring hinzu. Der backupdienst2 taucht dank der 1 mit dem Status WARN im Monitoring auf – hier nur zur Verdeutlichung.

Wichtig: Immer wenn Ihr etwas an Hosts und Services ändert, müsst Ihr die Änderungen via Activate Changes übernehmen – nur dann werden BI-Bäume neu berechnet!

check_mk business intelligence
Die beiden Hosts samt gefakter Backup-Dienste.

1. Regelpaket anlegen

Zunächst müsst Ihr im BI-Bereich ein BI Pack anlegen. Diese Pakete dienen erst mal nur der Ordnung und haben keinerlei Funktion. Los geht’s mit New BI Pack von der BI-Startseite.

check_mk business intelligence
Es geht los …

Vergebt als ID backupsystem und als Titel Redundantes Backup-System. Bestätigt mit Create.

check_mk business intelligence
Das BI-Pack dient als Überordner.

2. Hosts und Services anlegen

In der BI-Pack-Übersicht klickt Ihr auf das rechte Symbol mit der angedeuteten Liste, um Inhalte im Pack zu erstellen.

check_mk business intelligence
BI-Packs-Übersicht.

Erstellt nun eine eine erste Aggregationsregel über Create aggregation rule. Fertige BI-Anwendungen wie das Backup-System heißen intern Aggregate – hier geht es aber erst mal um Regeln im Aggregat, das Aggregat folgt später.

check_mk business intelligence
Die Logik spielt sich in den Aggregation Rules ab.

Sinn dieser ersten Regel: Es sollen die gewünschten Hosts und Services aufgenommen werden – ohne aber jeden Host und Service einzeln anzugeben. Unter Rule Properties vergebt Ihr als ID backupserver (weil hier die einzelnen, untersten Knoten, also die einzelnen Hosts und Services erzeugt werden). Als Titel kommt Backup-Server $instanz$ ins Feld und auch unter Parameter kommt ein instanz (hier wird die Variable eingeführt, daher keine $$ davor und dahinter). Das ist einfach eine beliebig benannte Variable, so dass diese Regel später für die Hosts backup1 und backup2 funktioniert – über den Aufruf backup$instanz$. Das Verständnis kommt in ein paar Schritten – versprochen 😉

check_mk business intelligence
Die Regel für die einzelnen Host- und Service-Knoten – mit Variablen.

Nun kommt der wichtigst Bereich der Regel: Unter Child Node Generation baut Ihr nun die Logik, nach der die Nodes/Knoten des BI-Baums erstellt werden. Beginnt ganz einfach mit State of a host und gebt als Host backup$instanz$ an. Fügt über den gelben Button einen weiteren Generator hinzu, dieses Mal mit State of a Service. Als Host kommt auch hier wieder – etwas gedoppelt – das backup$instanz$ hin und als Service backupdienst. Das .* im Bild steht für beliebige weitere Zeichen dahinter und ist nur zur Verdeutlichung im Bild: Check_MK versteht diesen Eintrag als regulären Ausdruck mit offenem Ende, sprich es werden eh alle Services gefunden, die mit backupdienst anfangen.

check_mk business intelligence
Bei Child Node Generation findet die eigentliche Logik statt.

Unter Aggregation Function lasst Ihr einfach alles auf Default: Take worst state of all nodes heißt nichts weiter, als dass ein übergeordneter Knoten den schlimmsten Status eines darunter liegenden Hosts/Services annimmt. Ist auch nur ein Service CRIT, ist auch der Knoten darüber CRIT. Stellt die Regel nun fertig.

check_mk business intelligence
Worst heißt hier: Ist ein Unterpunkt CRIT, ist es auch der Oberpunkt.

3. Backup-System anlegen

Die Hosts und Services Eures Backup-Universums habt Ihr nun adressiert, bringt aber noch nichts. Ihr braucht nun eine weitere Regel (Aggregatin Rule), die als übergeordneter Knoten agiert und die eben angelegte Regel für beide Backup-Hosts aufruft – schließlich will die Variable $instanz$ auch noch mit Werten versorgt werden. Legt also eine neue Regel an und vergebt bei Rule Properties die ID backupsystem und als Titel Redundantes Backup-System. (Ja, sorry – das BI-Pack hieß auch schon so, ist halt redundant … Aber nicht verwirren lassen: Der Name vom BI-Pack aus Schritt 1 ist völlig irrelevant.)

check_mk business intelligence
Zweite Regel: Das Backup-System als Ganzes – ruft dann später die erste Regel auf.

Weiter geht’s wieder mit Child Node Generation: Dieses Mal wählt Ihr als Generator Call a rule und dann als aufzurufende Regel Backup-Server $instanz$ aus Eurem Regelpaket. Und bei Arguments gebt Ihr nun eine 1 ein – so wird die oben erstellte Regel zum Einfügen eines Hosts/Services für den Host backup1 aufgerufen. Und somit wird dann eben ein Knoten für diesen Host erstellt. Entsprechend fügt Ihr denselben Generator noch mal hinzu, nur eben mit einer 2 als Argument.

check_mk business intelligence
Regel 2 ruft Regel 1 mit Parametern auf.

Unter Aggregation Function wählt Ihr diese Mal die Funktion Count the number of nodes in state OK. Oben wurde dem Knoten mit der worst-Option der schlimmste Zustand eines darunter liegenden Objekts zugeteilt. Bei dieser Variante könnt Ihr einfach selbst festlegen, bei wie vielen OK-Objekten der Knoten auch OK ist. Schließt wieder mit Create ab.

check_mk business intelligence
Upps, Zahlendreher – wer findet den Fehler? Macht so keinen Sinn, woll?!

4. Logik bewundern

Eure Logik ist im Grunde schon fertig – im Hauptmenü Eures BI-Packs seht Ihr Eure beiden Regeln. Die oberste Regel, also die Wurzel des Baums, erkennt Ihr an dem kleinen Baumsymbol und einer fehlende Ziffer in der Level-Spalte.

check_mk business intelligence
Oben Regel 2 als Wurzel, darunter Regel 1, die die „Blätter“ aufruft.

Klickt auf das Baumsymbol, um Euch das Baumskelett anzuschauen.

check_mk business intelligence
Das Baumskelett.

5. Aggregat anlegen

Leider seht Ihr in der GUI noch immer nichts: Ihr habt ein BI-Pack als eine Art Ordner und darin zwei Regel, die die Logik abbilden. Da sich Regeln aber wie Ihr gesehen habt kombinieren lassen, muss jetzt noch das eigentliche Aggregat erstellt werden, das dann endlich als hübsche Ansicht in der GUI auftaucht. Klickt also auf Aggregations und erstellt dann eine neue Aggregation.

Unter Properties könnt Ihr oben Gruppennamen wie Wichtiges eintragen, müsst Ihr aber nicht. Das heißt nur, dass in der Übersicht aller Aggregationen eine oder mehrere Gruppen existieren werden, unter denen dieses Aggregat dann auftaucht (Gruppe heißt hier eigentlich nur so viel wie Überschrift). Zudem gibt es wieder den Punkt Call a rule, wo Ihr zunächst das BI-Paket Redundantes Backup-System (backupsystem) und daraus die Wurzel-Regel Redundantes Backup-System (backupsystem) (nochmal sorry …) auswählt. Und das war’s für’s Erste!

check_mk business intelligence
Erst die Aggregation ist ein Objekt, das im Monitoring angezeigt wird.

6. Aggregat anschauen

Ruft nun im Views-Element in der Navigation Business Intelligence/All Aggregations auf – hier findet Ihr nun Euer Aggregat in der angegebenen Gruppe. Ihr seht nun als Wurzel Redundantes Backup-System und darunter die beiden per Variable ($instanz$) eingebundenen Hosts und darunter alle per regulärem Ausdruck eingebundenen Services (backupdienst*).

Das Coole: Fügt Ihr nun weitere Backup-Services nach diesem Namensschema ins Monitoring hinzu, landen sie automatisch in dem Aggregat. Das Uncoole: Wenn Ihr einen weiteren Backup-Host (backup3) hinzufügt, müsstet Ihr diesen samt des Parameters 3 der Regel hinzufügen. Aber das geht ebenfalls automatisch – falls Ihr noch Lust habt …

check_mk business intelligence
Eine hübsche Zusammenfassung des Status des Unternehmens-Backups.

7. Extra: Hosts dynamischer einbinden

Erstellt also spaßeshalber noch ein letztes Mal eine Regel in Eurem BI-Pack. Vergebt in den Eigenschaften wieder Namen und ID nach Belieben und schaut dann in den Kasten Child Node Generation: Nun wählt Ihr Create nodes based on a service search. Statt also die unterste Regel zweimal aufzurufen und die Parameter 1 und 2 manuell zu übergeben, wird hier nun eine Suche durchgeführt, die die Regel eben für alle Hosts aufruft, die zum Suchmuster passen.

Wählt über Host name den Eintrag Regex for host name. Als Hostnamen selbst gebt Ihr hier backup(.*) an – es werden also wieder Server/Hosts wie backup1 oder backup44 gefunden. Die Klammerung hat hier nur den Zweck, dass der dort gefundene Text – also zum Beispiel 1 oder 44 – in der Variablen $1$ gespeichert wird (das ist so’n Regex-Ding, kennt man auch von awk & Co.).

Da auch die Servicenamen mit backup beginnen, könnt Ihr den Ausrduck auch bei Service Regex eintragen, auch wenn die Klammer hier gerade nicht nötig ist. Und wie schon bei der vorigen Regel, wählt Ihr bei Call a rule wieder das BI-Pack Redundantes Backup-System (backupsystem) und daraus die unterste Regel für Hosts/Services namens Backup-Server $instanz$ (backupserver) und setzt bei Arguments die Variable $1$ ein, die hier denselben Zweck erfüllt, wie oben $instanz$.

Schlussendlich müsst Ihr natürlich wieder ein Aggregat anlegen – wie unter Schritt 5, nur wird nun eben diese Regel aufgerufen. Packt das Aggregat wieder in die Gruppe Wichtiges.

check_mk business intelligence
Im Grunde simpel: Gefunden werden alle Hosts „backup*“ und darauf alle Services „backup*“.

8. Das Ergebnis

Ihr seht nun abermals den Baum von eben. Zwar wird hier das ganze Konstrukt WARN, weil eben nur mit der worst-Option gearbeitet wurde, aber ansonsten ist es derselbe Baum.

check_mk business intelligence
Oben mit per Variablen angegebenen Hosts, unten mit per Suche angegebenen Hosts.

9. Das Wunder der Suche

Klont jetzt zum Testen einen Eurer Backup-Hosts, nennt ihn zum Beispiel backup44 und übernehmt die Änderungen via Activate Changes. Und siehe da: In der unteren Variante mit den per Suche eingefügten Hosts/Knoten, ist nun auch der neue geklonte Server zu sehen.

check_mk business intelligence
Aha – in der Hosts-per-Suche-Variante tauchen neue Hosts automatisch auf, wenn der Name auf’s Suchmuster passt.

Es gibt noch massenhaft „Kleinkram“ (Wartungszeiten, Verfügbarkeit, Rechte etc.) zum Thema BI in Check_MK, im Handbuch werden es später vermutlich über 40 große Seiten sein. Aber zum Schluss noch ein Tipp zum Spielen: Vor den Hosts und Services im Baum seht Ihr kleine Zahnradsymbole. Per Klick könnt Ihr die Elemente darüber testweise in einen anderen Zustand versetzen und so feststellen, wie sich der Ausfall dieser Komponente auf das gesamte BI-Konstrukt auswirkt. Und genau das ist eigentlich schon ein tolles, praktische Szenario: Ihr wollt einen Service oder einen Host kurzzeitig abstellen, um etwa eine Aktualisierung durchzuführen, und könnt so vorab prüfen, ob das geht, ohne die Anwendung Backup-System damit ebenfalls zu gefährden.

Natürlich lässt sich das obige Beispiel auch massiv ausbauen! Nur mal als Beispiel: Ihr könnt statt einem, auch gleich mehrere Services für die Suche angeben – ein simples backupdienste|foobar würde alle Services finden, die mit einem der beiden Suchwörter beginnen. Auch vertragen Services mehrere Match-Gruppen: Mit service-(.)-(.)-test könntet Ihr Dienste wie service-mirco-backup-test oder service-jochen-backup-test oder service-peter-media-test direkt ansprechen. Die Match-Gruppen sind über $1 und *$2** und so weiter zu verwenden.

Ansonsten gilt wie so oft: Die Werkzeuge habt Ihr nun an der Hand, der Rest liegt eher in Eurer Fantasie und Eurem Abstraktionsvermögen. Insofern: Viel Spaß!

Übrigens: Ihr könnt auch Philips-Hue-Leuchten mit Checkmk überwachen.

Mirco Lang

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler.

Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds.

Wenn Du hier mehr über Open Source, Linux, Bastelkram oder auch Windows-Basics lesen und Tutonaut unterstützen möchtest:
Spendier mir einen Kaffee via Paypal. Schon mal im Voraus: Danke!

Nicht verpassen: cli.help

Kommentar schreiben

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Do NOT follow this link or you will be banned from the site!