Die nächste Major-Version von Icinga 2 wird einige interessante Features unterstützen, die es noch einfacher machen, Ausnahmen für Services zu definieren. Bis die 2.3 als Release-Version verfügbar ist, wird es zwar noch eine Weile dauern, aber hier gibt es schonmal einen kleinen Vorgeschmack:
Konditionale Statements
Auch bekannter als if/else: In 2.3 ist es möglich, Attribute nur dann zu setzen, wenn bestimmte andere Bedingungen erfüllt sind. Hier ein Beispiel:
object Host "localhost" { check_command = "hostalive" address = "127.0.0.1" vars.http_vhosts["icinga.org"] = { http_address = "icinga.org" interval = 1m } vars.http_vhosts["netways.de"] = { http_address = "netways.de" } } apply Service "vhost " for (vhost => config in host.vars.http_vhosts) { host_name = "localhost" check_command = "http" if (config.interval) { check_interval = config.interval } else { check_interval = 5m } assign where host.vars.http_vhosts }
Entwicklungs-Konsole
Um Filterregeln für „apply“ und auch andere Ausdrücke einfacher testen zu können, gibt es eine CLI-basierte Konsole, die beliebige Befehle auswerten kann und deren Ergebnis anzeigt:
$ icinga2 console Icinga (version: v2.2.0-262-g7075607) <1> => config = { http_address = "icinga.org", interval = 1m } {"http_address":"icinga.org","interval":60.0} <2> => if (config.interval) { check_interval = config.interval } else { check_interval = 5m } 60.0 <3> => check_interval 60.0
Prototypen
Alle eingebauten Datentypen (d.h. Strings, Zahlen, Arrays und Dictionaries) verfügen nun über Methoden. Mit Hilfe dieser Methoden können z.B. Dictionaries manipuliert werden:
<1> => vhosts = { "icinga.org" = { http_address = "icinga.org" }, "netways.de" = { http_address = "netways.de" } } {"icinga.org":{"http_address":"icinga.org"},"netways.de":{"http_address":"netways.de"}} <2> => vhosts.remove("icinga.org") null <3> => vhosts {"netways.de":{"http_address":"netways.de"}} <4> => vhosts.len() 1.0
Mit Dictionary#remove würden sich so z.B. bestimmte Dictionary-Items entfernen lassen, falls diese bei einem bestimmten Host bzw. Service nicht vorhanden sein sollen.
0 Kommentare