Wir haben in den letzten Monaten viele Komponenten von Icinga2 intensiver benutzt und sind besonders von der API begeistert.

Damit ist es unter anderem einfach möglich, einen hochverfügbaren Cluster aus mehreren Icinga2-Servern zu betreiben, dessen Konfiguration zur Laufzeit geändert werden kann.

Beim Ausfall eines Cluster-Knotens migrieren die Checks auf andere Knoten des Clusters und – nach Recovery des ausgefallenen Knotens – auch wieder zurück.

Die API wird sowohl intern für die Cluster-Kommunikation verwendet, als auch, um dynamische Konfigurationsänderungen vorzunehmen, die sofort im Cluster sichtbar sind. Auch ist es darüber einfach möglich, den Zustand des Icinga2-Systems abzufragen, was wir früher gerne mit Livestatus gemacht haben. Die API steht auch bei normalen Icinga2-Instanzen zu Verfügung, nicht nur in einem HA-Cluster.

Die Dokumentation ist sehr umfangreich, deswegen veröffentlichen wir hier einige kurze Beispiele, die die Mächtigkeit der API demonstrieren.

Einen neuen Host anlegen:

Die konfigurierten Hosts auslesen:

Einen neuen Service mit Parametern anlegen:

Den Cluster-Status auslesen:

Diese Beispiele lassen sich sehr schön mit den JSON-Libraries der Lieblingsprogrammiersprache verwenden, so daß vollständig dynamische Konfiguration und Abfrage von Icinga2 möglich ist.

Mit Werkzeugen zur automatisierten Systemkonfiguration wie z.B. Ansible oder Puppet lässt sich mit Hilfe der Icinga2-API die Icinga2-Konfiguration vollautomatisch erledigen. Gerade wenn es darum geht, einen Monitoring-Cluster zu konfigurieren, ist die Kombination aus Ansible bzw. Puppet und der Icinga2-API sehr mächtig.

Die Icinga2 API