icinga2. Eine vereinfachte Grundterminologie des Monitoring-Systems

Eine Beziehung zwischen den grundlegenden Monitoring-Komponenten von icinga.

Während der Icinga Fundamental Training bekommen wir bei dexor oft die Frage “Ja, das ist alles klar, aber können Sie noch einmal kurz erklären, was ein Command, ein Service-Template, ein Service usw. ist?”.

Dies ist ein kurzes Memo der grundlegenden icinga2-Terminologie mit einfachen Erklärungen. Die genaue Definition entnehmen Sie bitte der offiziellen Dokumentation von icinga2.

Plugin

Ein Plugin ist ein Stück Software auf dem Rechner, auf dem die Checks ausgeführt werden muss. Es ist eine executable Datei – ein Skript oder eine Binärdatei, die mit einigen Flags und Argumenten ausgeführt werden kann, um das Checkergebnis zu erhalten. Ein Plugin ist kein Teil von icinga2. Es gibt einige Plugins im Paket “monitoring plugins“. Außerdem kann man Plugins für ein anderes Monitoring-System verwenden, wie z.B. Nagios, oder es ist möglich, eigene Plugins zu erstellen (im besten Fall unter Verwendung der Richtlinien)

Command

Ein Command ist eine Definition des Plugins für icinga2. Er enthält im besten Fall die Information, wie das Plugin (ein Stück Software auf dem Host) ausgeführt werden kann. Ein Befehl enthält Informationen darüber, welche Keys angewendet werden können, welche Standardwerte verwendet werden, welche Makros verwendet werden und in welcher Reihenfolge die Argumente und Flags erscheinen müssen. Er kann auch den Pfad zum Speicherort des Plugins auf dem Rechner enthalten.

Service Template

Ein Service Template ist eine Art und Weise, wie der Command verwendet werden soll. Ein einziger Command kann für die Monitoring verschiedener Services verwendet werden. Zum Beispiel kann der Command “http” des Plugins check_http aus den Monitoring Plugins http oder https Webseiten überprüfen. Er kann auch das Ablaufdatum des SSL-Zertifikats prüfen oder den Inhalt der Seite untersuchen. Für alle diese vier Fälle können wir verschiedene Service Template definieren. In einem Service Template können wir die Commandsargumente, ihre Reihenfolge und ihre Werte mithilfe von Variablen definieren. So legen wir fest, wie der Befehl für unsere Prüfungen verwendet werden soll.

Service

Ein Service – ist eine Bindung eines Service Templates an einen bestimmten Host. Nachdem wir die Art und Weise definiert haben, wie der Command verwendet werden soll, müssen wir angeben, auf welchen Host er angewendet werden soll. Es gibt drei Möglichkeiten, wie wir Service Templates an Hosts binden können –

  1. Single Service – Wir Erstellen einen Service und geben den genauen Host an, an den wir die Service Template binden wollen.
  2. Apply Rule – Durch die Erstellung einer Reihe von Konditionen werden wir die Hosts identifizieren, an die wir unsere Dienstvorlage binden werden.
  3. Service set – wir werden ein Bündel von Service Templates erstellen und durch die Erstellung einer Reihe von Konditionen die Hosts identifizieren, an die wir das gesamte Bündel von Service Templates binden werden.

Diese drei Wege stellen einfach unterschiedliche Beziehungen zwischen Dienstvorlagen und Hosts dar. Ein Single Service ist eine eins-zu-eins-Beziehung, eine Apply Rule- eins-zu-viele, und ein ServiceSet ist viele-zu-viele. Es ist erwähnenswert, dass wir im Falle eines Single Services einen Service selbst erstellen. Die beiden anderen Optionen sind die einzigen Regeln für die Erstellung der Objekte. icinga2 erstellt die Service-Objekte (als ob Sie das direkt tun würden) unter der Haube für Sie.

Check source

Ein wichtiger Aspekt der ganzen Geschichte – ist, wo das Plugin ausgeführt werden muss. Sie haben wahrscheinlich bemerkt, dass wir in der Beschreibung des Begriffs Service gesagt haben – “wir binden die Host- und Service Template” – und nicht “wir werden den Command auf diesem Host ausführen”. Dies geschieht, weil wir in icinga2 Plugins haben, die wir lokal ausführen wollen und Plugins, die wir aus der Ferne ausführen wollen. Es ist unsere Aufgabe, herauszufinden, wie wir das jeweilige Plugin verwenden wollen.

Zum Beispiel muss das Plugin check_load lokal ausgeführt werden – es kann sich nicht irgendwie mit dem entfernten Rechner verbinden. Das Plugin check_mysql kann seinerseits das Netzwerk nutzen oder sich lokal mit localhost mit MySQL verbinden. Die Art und Weise der Interaktion ist besser in der Service Template zu definieren. Wir müssen einfach daran denken, wenn wir eine Dienstvorlage definieren, und sicherstellen, dass sich die Software (das Plugin) auf dem Rechner befindet, auf dem icinga2 sie ausführen wird.

Kurzgesagt

Ein Plugin ist ein Teil der Software. Ein Command – ist die Beschreibung, wie dieses Stück Software verwendet werden kann. Service Template – ist die Art und Weise, wie der Command verwendet werden soll. Ein Service – gibt an, wo der Befehl auf die in der Dienstvorlage definierte Weise ausgeführt werden soll.