Kategorien: | Aktuelles |
---|---|
Tags: | Icinga Monitoring |
Das Icinga Team hat heute Icinga 2.3 veröffentlicht. Dieses Release stellt einen weiteren Meilenstein in der noch recht jungen Geschichte von Icinga2 dar. Dieses Release enthält eine Reihe von neuen Funktionen und eine Vielzahl von Bugfixes. Parallel zum Release wurden mit Unterstützung der credativ Pakete für Debian Unstable, Ubuntu und dem Debmon Projekt bereitgestellt. Alle Interessierten können also sofort damit beginnen die neuen Funktionen auszuprobieren. Icinga 2.3 wird selbstverständlich von dem Open Source Support Center der credativ GmbH mit einen umfassenden technischen Support unterstützt.
Neue Features:
Verbesserungen:
Wichtige Änderungen:
Bedingte Anweisungen:
durch die Verwendung von bedingten Anweisungen ist es nun Konfigurationen noch kompakter zu beschreiben. Bisher war es zum Beispiel nicht möglich Optionen abhängig von Variablen zu einem Objekt oder einer apply Regel hinzuzufügen. Das ist nun möglich und versetzt uns uns in die Lage noch kompaktere Regeln zu erzeugen:
apply Service "apt" { import "generic-service" check_command = "apt" if (host.vars.remote_client) { command_endpoint = host.vars.remote_client } assign where host.vars.distribution == "Debian" }
Funktionen, for Schleifen und anderes
Mit Hilfe der neuen Sprachfeatures ist es jetzt auch möglich innerhalb von Icinga2 eine eigene Logik zu implementieren. Ein Klassiker ist hier ein Clustercheck, wo der virtuelle Clusterhost nur auf Critical geht wenn die Anzahl der Knoten unter eine bestimmte Grenze gefallen ist.
object CheckCommand "clustercheck" { import "plugin-check-command" command = {{ var cmd = [ PluginDir + "/check_dummy" ] var cluster_nodes = macro("$cluster_nodes$") var host_failed = [ ] for (cluster_node in cluster_nodes) { log("Check state of " + cluster_node) /* get host state from node */ var host = get_host(cluster_node) /* wenn der Host kritisch ist zählen wir den Fehlerwert hoch und speichern den kritischen Host in einer Variable */ if (host.state_raw != 0 && host.state_raw != 1) { log(cluster_node + " failed") host_failed += [ cluster_node ] } } if (len(host_failed) >= number(macro("$cluster_critical$"))) { cmd += [ "2", "Cluster ist in einem kritischen Zustand. Kritische Hosts: " + host_failed.join(",") ] } else { if (len(host_failed) >= 1) { cmd += [ "0", "Cluster hat Probleme. Kritische Hosts: " + host_failed.join(",") ] } else { cmd += [0, "Cluster ist OK"] } } return cmd }} } object Host "node1" { import "generic-host" address = "127.0.0.1" } object Host "node2" { import "generic-host" address = "127.0.0.1" } object Host "node3" { import "generic-host" address = "192.100.213.2" } object Host "cluster" { import "generic-host" check_command = "clustercheck" /* unser cluster ist kritisch wenn mehr als 2 Hosts weg sind */ vars.cluster_critical = "2" vars.cluster_nodes = [ "node1", "node2", "node3" ] check_interval = 10s }
Kategorien: | Aktuelles |
---|---|
Tags: | Icinga Monitoring |
über den Autor
Senior Berater
zur Person
Alexander ist seit 1996 in der Open Source-Welt unterwegs und hat bei verschiedensten Open Source-Projekten mitgewirkt. Aktuell ist er im Debian- und GRML-Projekt aktiv. Auch bei credativ zählt er seit 2004 zu den Urgesteinen. Hier bei ist er derzeit als Projekt- und Teamleiter unterwegs und versucht die Kunden mit kreativen Lösungen für schwierige Probleme zu unterstützen.