Selbstverständlich können Sie Ihr SMS Gateway dazu nutzen Alarme aus Icinga 2 via SMS zu versenden.

Hierzu benötigen Sie zunächst das Skript sendsms.pl. Laden Sie es herunter und legen Sie es auf Ihrem Icinga Server im Verzeichnis /usr/lib/nagios/plugins/ ab.
Das Skript setzt folgende Perl Module voraus:

  • LWP::UserAgent
  • URI::Escape
  • Text::Icon

Im nächsten Schritt müssen nun Kommandos für die SMS Benachrichtigung in Icinga 2 konfiguriert werden. Außerdem müssen entsprechende Kontakte angelegt werden.

Beispiel: Definition für SMS Benachrichtigungen in /etc/icinga2/conf.d/commands.conf 

object NotificationCommand "braintower-host-notification" {
	import "plugin-notification-command"
	command = [ PluginDir + "/sendsms.pl" ]
	arguments = {
		"-pager" = {
			value = "$braintower_pager$"
			description = "Telephone number of the SMS recipient"
			skip_key = true
		}
		"-message" = {
			value = "$braintower_message$"
			description = "SMS message text"
			skip_key = true
		}
	}
	vars.braintower_pager = "$user.pager$"
	vars.braintower_message = "$notification.type$ - Host $host.display_name$ is $host.state$ since $icinga.long_date_time$ info: $host.output$"
}
object NotificationCommand "braintower-service-notification" {
	import "plugin-notification-command"
	command = [ PluginDir + "/sendsms.pl" ]
	arguments = {
		"-pager" = {
			value = "$braintower_pager$"
			description = "Telephone number of the SMS recipient"
			skip_key = true
		}
		"-message" = {
			value = "$braintower_message$"
			description = "SMS message text"
			skip_key = true
		}
	}
	vars.braintower_pager = "$user.pager$"
	vars.braintower_message = "$notification.type$ - Host $host.display_name$ is $host.state$ since $icinga.long_date_time$ info: $host.output$"
}

Beispiel: Definition von Host-/Service Templates für SMS Benachrichtigungen in /etc/icings2/conf.d/templates.conf

template Notification "braintower-host-notification" {
	command = "braintower-host-notification"
	states = [ Up, Down ]
	types = [ Problem, Acknowledgement, Recovery, Custom, FlappingStart, FlappingEnd, DowntimeStart, DowntimeEnd, DowntimeRemoved ]
	period = "24x7"
}
template Notification "braintower-service-notification" {
	command = "braintower-service-notification"
	states = [ OK, Warning, Critical, Unknown ]
	types = [ Problem, Acknowledgement, Recovery, Custom, FlappingStart, FlappingEnd, DowntimeStart, DowntimeEnd, DowntimeRemoved ]
	period = "24x7"
}

Beispiel: Host-/Service Templates für SMS Benachrichtigungen auf einen Host binden in /etc/icinga2/conf.d/notifications.conf

apply Notification "braintower-alerts" to Host {
	import "braintower-host-notification"
	user_groups = host.vars.notification.sms.groups
	assign where host.vars.notification.sms
}
apply Notification "braintower-alerts" to Service {
	import "braintower-service-notification"
	user_groups = host.vars.notification.sms.groups
	assign where host.vars.notification.sms
}

Beispiel: Definition einer Benutzergruppe für SMS Benachrichtigungen in /etc/icinga2/conf.d/groups.conf

object UserGroup "smsusers" {
	display_name = "Icinga 2 SMS Group"
}

Beispiel: Einen Kontakt zur Benutzergruppe für SMS Benachrichtigungen hinzufügen /etc/icinga2/conf.d/users.conf

object User "Max_Muster" {
	import "generic-user"
	display_name = "Max Muster"
	groups = [ "smsusers" ]
	pager = "00491701234567"
}

HTTPS

Das Skript sendsms übermittelt den Alarm an das SMS Gateway. Standardmäßig erfolgt diese Kommunikation unverschlüsselt.
In Zeile 43 können Sie dieses Verhalten ändern, indem Sie den Aufruf auf HTTPS umstellen:

my $response = $lwp->get('https://'.$smsgw_host.':'.$smsgw_sendsms_port.$smsgw_sendsms_path.'?username='.$smsgw_username.'&password='.$smsgw_password.'&to='.$recipient.'&text='.$message);


Sofern es sich bei dem im SMS Gateway eingerichteten SSL Zeritfikat um ein selbst signiertes Zertifikat handelt, kann es zu einer Fehlermeldung im icinga.log kommen: Can't connect to ... (certificate verify failed)
In diesem Fall fügen Sie den folgenden Code in Zeile 35 ein:

$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0;

Verwandte Artikel