Unter bestimmten Umständen ist es besser Nagios Meldungen per Telefonanruf zu erhalten. Vor allem in Zeiten von Telefonflatrates ist eine Meldung so günstiger als eine SMS. Damit dies unter Linux funktioniert, können einige freie Anwendungen zu einem einfachen Shell Script kombiniert werden, die genau diesen Zweck erfüllen. Zur Einrichtung benötigt man linphonec für den Aufbau des Telefonats, Expect zur Steuerung von linphonec und text2wave vom festival Paket für die Sprachsynthese.
Installation unter Debian
Die Installation unter Debian gestalltet sich wie immer mit apt recht komfortabel und einfach.
apt-get install expect festival linphonec-nox
Linphonec
linphonec ist ein freier Kommandozeilen-Client für das SIP Protokoll. Nach der Installation muss man noch eine funktionierende Konfigurationsdatei erstellen.
Beispielkonfiguration linphonec für sipgate
natürlich kann hier ein beliebiger Provider verwendet werden. Auch die Anbindung an einen eigenen SIP Server ist problemlos möglich.
[net]
con_type=3
use_nat=1
nat_address=
download_bw=0
upload_bw=0
firewall_policy=2
stun_server=stun.sipgate.net:10000
[sip]
username=
hostname=sipgate.de
sip_port=5060
use_registrar=1
as_proxy=0
expires=900
registrar=sip:sipgate.de
passwd=
addr_of_rec=sip:@sipgate.de
guess_hostname=1
contact=sip:@sipgate.de
inc_timeout=15
use_info=0
use_ipv6=0
default_proxy=-1
[rtp]
audio_rtp_port=5004
video_rtp_port=9078
audio_jitt_comp=60
video_jitt_comp=60
[sound]
dev_id=2
rec_lev=100
play_lev=80
source=m
local_ring=/usr/share/sounds/linphone/rings/oldphone.wav
remote_ring=/usr/share/sounds/linphone/ringback.wav
playback_dev_id=ALSA: default device
ringer_dev_id=ALSA: default device
capture_dev_id=ALSA: default device
echocancelation=0
enabled=0
show_local=0
display=0
capture=0
[audio_codec_0]
mime=PCMU
rate=8000
enabled=1
[audio_codec_1]
mime=GSM
rate=8000
enabled=1
[audio_codec_2]
mime=PCMA
rate=8000
enabled=1
[audio_codec_3]
mime=speex
rate=8000
enabled=1
[audio_codec_4]
mime=speex
rate=16000
enabled=1
[audio_codec_5]
mime=1015
rate=8000
enabled=1
[address_book]
entry_count=0
[video_codec_0]
mime=theora
rate=90000
enabled=1
[video_codec_1]
mime=H263-1998
rate=90000
enabled=1
[video_codec_2]
mime=MP4V-ES
rate=90000
enabled=1
[video_codec_3]
mime=x-snow
rate=90000
enabled=1
[auth_info_0]
username=
passwd=
realm="sipgate.de"
Die fertige Konfigurationsdatei speichert man an einem Ort, der später für den Nagios Benutzer erreichbar und lesbar ist.
sip-talk shell script
Das folgende shell script sip-talk übernimmt die Anfragen von Nagios und erzeugt eine entsprechende Sprachnachricht, die mit Hilfe von linphhonec an eine Telefonnummer übertragen wird.
#!/bin/bash
# sip-talk - send a voice message
# 12.01.2009 fk@kworx.de
# config
SIPREALM=sipgate.de # used for uri sip:
@SIPREALM
LINPHONERC=./.linphonerc # path to linphonerc
CALLDURATION=60 # max call duration in seconds
TMPDIR=/var/tmp
LINPHONEC=/usr/bin/linphonec
EXPECT=/usr/bin/expect
TEXT2WAVE=/usr/bin/text2wave
# end config
function usage(){
echo "usage: $0 -r -m \"\""
exit 1
}
if [ $# -lt 2 ]; then
usage
fi
while getopts "r:m:" OPTION; do
case $OPTION in
r)
RECIPIENT="sip:$OPTARG@$SIPREALM"
;;
m)
MESSAGE="$OPTARG"
;;
*)
usage
;;
esac
done
# check values
if [ "$RECIPIENT" = "" ]; then
usage
fi
if [ "$MESSAGE" = "" ]; then
usage
fi
# check binaries
if [ ! -x "$LINPHONEC" ]; then
echo "$LINPHONEC not found!"
exit 1
fi
if [ ! -f "$LINPHONERC" ]; then
echo "$LINPHONERC not found!"
exit 1
fi
if [ ! -x "$EXPECT" ]; then
echo "$EXPECT not found!"
exit 1
fi
if [ ! -x "$TEXT2WAVE" ]; then
echo "$TEXT2WAVE not found!"
exit 1
fi
DATE=`date +%y%m%d%k%M|sed 's/ /0/'`
# generate message
MSGWAV=$TMPDIR/$DATE.$RANDOM.wav
$TEXT2WAVE -o $MSGWAV -f 8000 << EOF
$MESSAGE
EOF
# execute linphonec
while [ -f $TMPDIR/linphonec ]; do
sleep 10
done
touch $TMPDIR/linphonec
$EXPECT << EOF
spawn $LINPHONEC -c $LINPHONERC
expect "linphonec> " {send "soundcard use files\r"}
expect "linphonec> "
sleep 5
send "call $RECIPIENT\r"
expect "linphonec>; Connected."
sleep 1
send "play $MSGWAV\r"
sleep $CALLDURATION
send "quit\r"
EOF
# cleanup
rm -f $MSGWAV
rm -f $TMPDIR/linphonec
Nagios Konfiguration
In der Nagios Konfiguration müssen noch die Kommandos für die Benachrichtigungen(notifications.cfg) angelegt bzw. konfiguriert werden.
Danach können notify-by-voice und host-notify-by-voice wie gewohnt in der Konfiguration genutzt werden.
define command{
command_name notify-by-voice
command_line
-r $CONTACTPAGER$ \
-m '"Service: $SERVICEDESC$ Host: $HOSTNAME$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Info: $SERVICEOUTPUT$ Date: $LONGDATETIME$"'
}
define command{
command_name host-notify-by-voice
command_line
-r $CONTACTPAGER$ \
-m '"$NOTIFICATIONTYPE$: $HOSTNAME$ is $HOSTSTATE$ Info: $HOSTOUTPUT$ Time: $LONGDATETIME$"'
}
Schreibe einen Kommentar