Nehmen wir mal an, wir haben ein Gerät, das hat besondere Eigenschaften.
Zum Beispiel der SQL Server der IMMER alles an RAM saugt oder der ping check auf den Google DNS, der über eine ausgelastete Leitung führt.
Ich nenne hier mal zwei Möglichkeiten, die das vereinfachen. Zum einen eine If/Else Frage (die auch ohne Else funktioniert) und einmal direkt in der Host definition.
Custom Variablen für Ping checks definiert unter /usr/share/icinga2/include/command-plugins.conf
# Custom Variablen direkt in der Hostkonfiguration object Host "internet" { display_name = "Internet" import "generic-host" address = "8.8.8.8" vars.os = "" check_command = "ping" vars.ping_wrta = 150 vars.ping_wpl = 5 vars.ping_crta = 200 vars.ping_cpl = 15 vars.sla = "24x7" }
# If/Else Anweisung in der Servicedefinition apply Service "RAM-Auslastung" { import "wmi-service" vars.check_mode = "checkmem" if (host.name == "sqlserver") { vars.wmi_warn = "95" vars.wmi_crit = "98" }else { vars.wmi_warn = "90" vars.wmi_crit = "95" } assign where host.vars.os == "Windows" ignore where host.vars.disable_wmi }
Wenn die Thresholds schon fest definiert im command sind, dann genügt die If-Anweisung im Service
apply Service "ping4" { import "generic-service" check_command = "ping4" assign where host.address if (host.name == "internet") { vars.ping_wrta = 150 vars.ping_wpl = 5 vars.ping_crta = 200 vars.ping_cpl = 15 } }
Nehmen wir jetzt mal an wir haben nicht nur ne hohe last fürs internet, sondern auch zB. für ein bestimmtes Gerät dann am besten folgendermaßen lösen:
if (host.name == "internet" || host.name == "old_switch") { vars.ping_wrta = 150 vars.ping_wpl = 5 vars.ping_crta = 200 vars.ping_cpl = 15 }
Lieber so lösen, da es mit einem elseif wohl nicht so klappen wird.