Nagios-Alarme via VoIP einfach realisiert

© Natalia Lukiyanova, 123RF

Nagios am Apparat

Von Haus aus kann Nagios bei Ausfall eines Dienstes die Admins nur per E-Mail alarmieren. Doch diese Mails können leicht übersehen werden. Ein Anruf wirkt da nachhaltiger.
Obwohl Linux als freie Software kostenlos verfügbar ist, setzen viele beim Unternehmenseinsatz auf Enterprise-Distributionen mit Support. Wo die Stärken der ... (mehr)

Ein klingelndes Telefon ist schwer zu überhören, und so liegt es nahe, Nagios das Telefonieren beizubringen, damit es wahrgenommen wird. Das gelingt beispielsweise mit einer Kombination von Nagios und Asterisk. Asterisk ist allerdings nicht trivial zu konfigurieren, und eine ganze Telefonanalage nur für das Monitoring aufbauen und betreuen zu müssen, ist womöglich doch etwas zu viel des Guten.

Mithilfe eines SIP-Accounts, den man für wenig Geld im Internet bekommt, eines CLI-SIP Clients und eines einfachen Shellskriptes lässt sich das Gleiche mit weniger Aufwand realisieren.

Zunächst der SIP Account: Hier hat man die Qual der Wahl, welchen Anbieter man verwenden möchte. Prinzipiell geht es mit jedem VoIP-Anbieter. Die Einrichtung des Accounts ist trivial, man füllt das entsprechende Online-Formular aus, wartet auf die Bestätigungsmail und richtet sich ein Konto ein.

Abbildung 1: Wie zu sehen, fungiert als Kommando, das die Benachrichtigung übernimmt, hier das E-Mail-Skript.

Der passende SIP-Client

Nun der CLI-SIP-Client: Hier wird es etwas komplizierter. Es gibt zwar einige VoIP-Clients, die meisten sind jedoch für den Desktop gedacht und lassen sich schlecht bis gar nicht per Skript steuern. Letzlich erwies sich PJSUA als beste Wahl. PJSUA ist die Referenzimplementierung von PJSIP, was wiederum eine Kommunikationsbibliothek für SIP, RTP, STUN und einige weitere VoIP-bezogene Protokolle darstellt.

Leider gibt es keine Pakete von PJSUA, sodass man es sich selbst aus den Quelle kompilieren muss, was aber zum Glück leicht gelingt. Die Quellen von PJSIP/PJSUA besorgt man sich via:

wget http://www.pjsip.org/release/2.0./pjproject-2.0.1.tar.bz2

In dem Verzeichnis, in dem man sie entpackt hat, reicht dann:

./configure
make dep
make

Nun liegt im Verzeichniss »pjsip-apps/bin« eine Datei, die mit »pjsua« beginnt. Das ist der SIP Client. Ihn kopiert man sich an eine beliebige Stelle des Systems und macht ihn dort ausführbar. Nun benötigt man noch eine Konfigurationsdatei für den Client, in der man die Zugangsdaten zum SIP-Provider angibt.

Dafür erstellt man eine Textdatei mit den Inhalt aus Listing 1. Die Daten muss man natürlich an den eigenen SIP-Provider anpassen, was nicht immer ganz einfach ist, da die Provider gerne eigene Bezeichnungen für ID und Realm verwenden. Im Zweifelsfall hilft die Hotline des Provider wahrscheinlich gerne weiter. »--null-audio« sorgt dafür, dass der Server keine Audioausgabe verwendet und so der Rechner das Gespräch nicht über die Lautsprecher ausgibt.

Listing 1

Provider-Daten

 

Das Anruf-Skript

Jetzt braucht man noch ein Skript, das Nagios im Fall der Fälle aufrufen kann. Dieses Skript sorgt auch dafür, dass sich die Benachrichtigungen nicht gegenseitig in die Quere kommen. Wenn Nagios zwei Telefonate kurz nacheinander absetzen muss, so sorgt das Skript dafür, dass der erste Anruf beendet ist, bevor es den zweiten startet. Sonst würde der Client den Dienst verweigern, weil die Leitung belegt ist, und die zweite Benachrichtigung würde verloren gehen.

Das Skript benötigt noch zwei weitere Tools: »expect« , damit es »pjsua« steuern kann und »text2wave« , damit es aus einer Textzeile eine WAV Datei erzeugen kann. Das Tool »text2wave« ist Bestandteil von Festival, einem Programm zur Sprachsynthese. Beide Pakete kann man wieder über die Paketverwaltung installieren. Danach macht man das Skript aus Listing 2 ausführbar.

Listing 2

Anruf-Skript

 

Den Wert von »NUMBER« stellt man auf die Telefonnummer ein, die Nagios anrufen soll. »MESSAGE« enthält das, was der Angerufene zu hören bekommt. Wer die Telefonnummer nicht fest im Skript verdrahten möchte, kann Nagios die Nummer auch übergeben lassen. Über »DURATION« kann man einstellen, wie lange der Anruf maximal dauern soll. Geht in dieser Zeit keiner ans Telefon, legt das Skript wieder auf. Bei Anrufannahme spielt es die Nachricht in einer Schleife ab. In der Zeile, die mit »spawn« beginnt, muss man gegebenfalls das letzte Argument an den eigenen SIP Provider anpassen.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019