Zabbix Alarmieren per telefonanruf

Vorüberlegungen

SMS haben den Nachteil, dass sie nur einen kurzen Klingelton auf dem Handy erzeugen, der leicht überhört werden kann. Es bleibt also der Sorgfalt des Mitarbeiters überlassen, ob er oder sie regelmäßig auf dem Handy nach verpassten Kurznachrichten schaut.

Wenn man wirklich sicher gehen möchte, dass eine Alarmierung des Monitorings vom Mitarbeiter wirklich empfangen wurde, dann ist ein Telefonanruf besser als eine SMS. Man kann das Telefon solange anrufen, bis es abgehoben wird, oder bis durch eine Tastenkombination der Empfang der Nachricht quittiert wird.

Richten wir also eine Alarmierung per Telefonanruf in Zabbix ein!

Viele Admins nehmen die Telefonanalgen Software Asterisk zu Hilfe, um automatisiert Anrufe auszulösen. Asterisk setzt aber einiges Know-How voraus und ist das Auslösen eines simplen Anrufs eine zu aufwändige Lösung.

Mit dem Kommandozeilen SIP-Softphone pjsua aus dem Projekt pjsip können Sie auch ohne Asterisk automatisiert Telefonanrufe auslösen.

psjsip ist freie Sofware und die Installation ist sehr einfach und sollte auf allen Distributionen problemlos verlaufen.

Neben der Software brauchen Sie noch einen Telefonprovider, der für Sie den Anruf ins Fest- oder Mobilfunknetz weiterleitet. Viele Provider bieten heutzutage günstige Tarife für VOIP-Anrufe ins Fest- und Handynetz an.

Für diese Anleitung wurde Sipcall-Voip ausgewählt, der Anrufe ins deutsche Festnetz sogar kostenlos ermöglicht.

Wenn Sie eine "voipfähige" Telefonanlage haben, können Sie natürlich auch diese verwenden.

pjsip und pjsua installieren

Dateien kompilieren

Laden Sie sich die aktuelle Version von pjproject herunter. Pjsip ist eine Sammlung von Bibliotheken und Kommandozeilenwerkzeugen, mit denen Sie per Voip Telefonate führen können.

Die Installation aus den Quellen gelingt unter allen Distributionen reibungslos.

cd /usr/src
wget http://www.pjsip.org/release/1.8.10/pjproject-1.8.10.tar.bz2
tar xjf pjproject-1.8.10.tar.bz2
cd pjproject-1.8.10
./configure
make dep
make
make install
Dep in make dep steht für "dependency" und hat nichts mit dem Paketmanager von Debian zu tun. Das bedeutet, auch auf Distributionen, die RPM verwenden, führen Sie diesen Schritt aus.

Das von uns benötigte Programm "pjsua" wird von "make" zwar übersetzt aber von "make install" nicht installiert. Deshalb kopieren wir es mit

cp pjsip-apps/bin/pjsua-x86_64-unknown-linux-gnu  /usr/bin/pjsua

Je nach Architektur Ihres Systems, kann die Datei auch pjsua-i686-pc-linux-gnu heißen. Legen Sie auch einen Ordner für die Konfigurationsdateien an

mkdir /etc/pjsip

Zugangsdaten zum Telefonprovider hinterlegen

Legen die im Ordner /etc/pjsip eine Datei mit den Zugangsdaten zu einem Sip-Provider an. Stellen Sie sicher, dass Sie über diesen Provider ins Fest- und Handynetz telefonieren können. Bei den meisten Providern müsen dazu vorher ein Guthaben "aufladen".

Für den Provider sipcall-voip.de sieht die Datei so aus:

--id sip:<sip_id>@free2.voipgateway.org
--registrar sip:free2.voipgateway.org
--realm *
--username <sip_id>
--password <geheim>
--null-audio

Mit folgender Konfiguration können ausgehende Telefonate über sigate.de geführt werden

--id sip:<sip_id>@sigate.de
--registrar sip:sipgate.de
--realm *
--username <sip_id>
--password <geheim>
--outbound sip:sipgate.de
--stun-srv stun.sipgate.net:10000
--null-audio

Weiter Informationen über die Optionen von pjsua finden Sie hier

Telefonverbindung testen

Starten Sie den pjsua-Client unter Angabe der Konfiguration und achten Sie auf die Ausgabe.

pjsua --config-file /etc/pjsip/sipcall-voip.cnf

In der Ausgabe sollten sich bei einer erfolgreichen Registrierung beim Provider folgende Zeilen befinden:

10:54:31.385    pjsua_acc.c  sip:<sip_id>@free2.voipgateway.org: registration success, status=200 (OK), will re-register in 3600 seconds
10:54:31.385    pjsua_acc.c  Keep-alive timer started for acc 2, destination:212.117.222.248:5060, interval:15s

Der pjsua-Client befindet sich nun in einem interaktiven Modus. Drücken Sie Enter und es erscheint das Menu.

Geben Sie "m" für "Make new call" ein. Dann geben Sie eine Rufnummer ein, da zum Test angerufen werden soll.

>>> m
(You currently have 0 calls)
Buddy list:
 -none-

Choices:
   0         For current dialog.
  -1         All 0 buddies in buddy list
  [1 - 0]    Select from buddy list
  URL        An URL
  <Enter>    Empty input (or 'q') to cancel
Make call: sip:030123456789@free2.voipgateway.org

Die Rufnummer muss als SIP-URI eingegeben werden. sip:<rufnummer>@<registar>


Nach Eingabe der Nummer sollte pjsua Sie über den Status der Verbindung informieren.

Sollte das angerufene Telefon nicht klingeln, und Sie sehen Meldungen ähnlich wie diese,

11:00:48.510    pjsua_app.c  Call 0 state changed to CALLING
11:01:20.513    pjsua_app.c  Call 0 is DISCONNECTED [reason=408 (Request Timeout)]
11:01:20.513    pjsua_app.c  
 [DISCONNCTD] To: sip:030123456789@free2.voipgateway.org
 Call time: 00h:00m:00s, 1st res in 32043 ms, conn in 0ms
 SRTP status: Not active Crypto-suite: (null)
11:01:21.517  pjsua_media.c  Closing sound device after idle for 1 seconds
11:01:21.517  pjsua_media.c  Closing null sound device..

dann experimentieren Sie mit folgenden Optionen in der pjsua Konfigurationsdatei

--outbound sip:sipgate.de
--stun-srv stun.sipgate.net:10000
--auto-update-nat 0

Weitere Optionen zum Verbinden des Clients mit dem Provider finden Sie hier http://www.pjsip.org/pjsua.htm

Anrufen und Soundfile abspielen

Testen Sie nun, ob Sie ein Telefon anrufen und automatisch eine Sounddatei abspielen könne, sobald der Hörer abgenommen wird.

pjsua --config-file /etc/pjsip/sipgate.cfg --play-file /root/test.wav --auto-play --duration 60 --max-calls 1 sip:030123456789@sipgate.de

Beenden Sie den Anruf mit Strg-D.

Wenn Ihr Telefon geklingelt hat und die Datei abgespielt wurde, dann haben Sie den wichtigsten Part geschafft.

Rufen Sie das oben genannte Programm nicht direkt aus Zabbix auf. pjsua beendet sich nicht automatisch, es würden sich also Prozesse anstauen. Außerdem verfügt pjsua über keinen Spooler, der dafür sorgt, dass die Gespräche hintereinander "abtelefoniert" werden.

Einen Telefonspooler installieren

Sie finden hier einen einfachen Telefonspooler, der eine Liste von Rufnummern hintereinander anruft und den Status jeder Verbindung protokolliert.

Applikationen wie der Zabbix-Server rufen dann nicht mehr pjsua auf, sondern reihen die Zielrufnummer in der Warteschlange ein.

Perlmodule installieren

Es wird das Perlmodul "expect" benötigt, um pjsua "fernsteuern" zu können.

Debianuser können dieses per Paketmanager installieren

aptitude install libexpect-perl

Stellt der Paketmanager das Modul nicht zur Verfügung, muss man per CPAN installieren

cpan -fi Expect

Spoolerscript installieren

Ansagen generieren

WAV Files mit passenden Ansagen können Sie mit verschiedenen Sprachsyntese-Programmen erzeugen.

Einige Linuxdistributionen liefern die Software festival mit, mit der Sie Texte vorlesen lassen können.

Eine schnellere und einfacherer Alternative ist die AT&T Labs Natural Voices® Text-to-Speech Demo. Über eine Webseite geben Sie einen Text ein, den Sie dann als WAV-File downloaden können.

http://www2.research.att.com/~ttsweb/tts/demo.php