Wenn man ein großes Setup betreut in dem häufig eine neue Software ausgerollt wird, wird es vor kommen, dass man Downtimes dynamisch definieren und ausrollen möchte.
Im Idealfall auch nicht per Hand sondern von außen angetriggert … man ist ja ein wenig faul. ;)

Vor Version 2.4.0 von Icinga2 musste man auf die Nutzung von LiveStatus zurückgreifen, das man ja noch von Nagios kennen sollte.

(Wie man den LiveStatus über puppet aktiviert hatte ich bereits in einem vorherigen Blogpost beschrieben)

Mit dem LiveStatus ist man allerdings auf ein Set festgelegter Kommandos beschränkt. Und hierbei ist beschränkt auch ernst zu nehmen.

Für das herumprobieren kann man sich die folgende Beispiele ansehen und damit herumprobieren.
Wenn man den lokalen Socket nutzen möchte, dann muss man sich vorher noch socat installieren!

/bin/echo -e "COMMAND [$(date +%s)] SCHEDULE_HOST_SVC_DOWNTIME;$HOST_NAME;1442313547;1442314159;0;0;0;$CONTACT;$COMMENT\n" | socat /var/run/icinga2/cmd/livestatus stdio
/bin/echo -e "COMMAND [$(date +%s)] ACKNOWLEDGE_SVC_PROBLEM;$HOST_NAME;$SERVICE_NAME;0;0;0;$CONTACT;$COMMENT\n" | nc localhost 8080

Das berechnen der nötigen Timestamps kann folgendermaßen erfolgen:

# current 
date '+%s'
# current + 10h
date '+%s' -d "+10 hours"
# current + 10m
date '+%s' -d "+10 minutes"

Der eigentliche Nachteil bei der Nutzung von LiveStatus ist die fehlende Rückmeldung.
Man kann eigentlich alles in den Request hineinschreiben was einem einfällt, LiveStatus frisst das alles klaglos.