Benutzer-Werkzeuge

Webseiten-Werkzeuge


sms-alarmierung_mit_yaps

SMS-Alarmierung mit YAPS

YAPS Installation ISDN

YAPS ist ein Tool zum Versenden von SMS über Modem bzw. eine ISDN-Karte.

Als ISDN-Karte empfiehlt sich:

  • AVM Fritz!PCI v2.0 ISDN (rev 02)

Damit eine ISDN-Karte auch funktioniert, muss noch das Paket „isdnutils“ installiert werden.

apt-get install isdnutils

Wichtig!!! Durch die Installation des Paketes isdnutils wird die „default route“ auf die ISDN-Karte konfiguriert. Um dies zu korrigieren, bitte wie im Artikel Isdnutils beschrieben vorgehen.


Das Tool yaps ist im Downloadbereich unter: http://www.jbackes.de/downloads/yaps/yaps-0.96.tar.gz zu finden. Hier liegt auch ein bereit kompiliertes yaps-Binary http://www.jbackes.de/downloads/yaps/yaps.

Sollte dies nicht funktionieren, kann über das tar.gz wie folgt neu kompiliert werden.

make depend
make
make install

Die Binär-Datei 'yaps' wird nach /usr/sbin/ kopiert.

cp yaps /usr/sbin

Seine Konfiguration holt YAPS aus der Datei /etc/yaps.rc. Eine vorkonfigurierte yaps.rc gibt es ebenfalls im Downloadbereich unter: http://www.jbackes.de/downloads/yaps/yaps.rc cp yaps.rc /etc/


Außerdem muss der User „nagios“ in der Gruppe „dialout“ sein, damit er auch auf das ISDN-Interface zugreifen darf.

adduser nagios dialout

Wichtig:<BR> Ab Ubuntu Version 9.10 funktioniert der oben beschriebene Weg nicht mehr. Aus noch ungeklärten Gründen lässt sich zwar die SMS versenden, yaps bleibt aber beim „hangup“ stehen, so dass das Interface gesperrt ist und keine weitere SMS mehr versendet werden kann. Als „workaround“ kann mit den CAPI-Treibern gearbeitet werden.

YAPS Installation CAPI-Treiber

Um die Fritzcard über CAPI mit YAPS ansprechen zu können, müssen folgende Pakete installiert werden:

  • capiutils
  • build-essential (damit kompiliert werden kann)
  • linux-headers-<kernel-version>
apt-get install capiutils build-essential linux-headers-2.6.32-24-generic

Mit den capiutils wird eine Modul-Blacklist erzeugt, welche verhindert, dass die hisax-Treiber geladen werden. Zusätzlich muss hier noch der Eintrag blacklist avmfritz hinzugefügt werden. <BR>Die /etc/modprobe.d/blacklist-capiutils.conf hat somit folgenden Inhalt:

blacklist hisax
blacklist hisax_fcpcipnp
blacklist avmfritz

Nun muss ein neues Kernel-Modul (fcpci) kompiliert und ins System integriert werden. Eine vorkompilierte Version (fcpci.ko) sowie die Quellcode (fritz-fcpci-src-2.6.31_untested.tar.bz2) finden sich im Download-Bereich.

wget http://www.jbackes.de/downloads/nagios/fcpci.ko
wget http://www.jbackes.de/downloads/nagios/fritz-fcpci-src-2.6.31_untested.tar.bz2

Das fertige Modul muss dann natürlich noch an die passende Stelle kopiert werden und dem System bekannt gegeben werden. Geladen wird es beim Systemstart automatisch, solange die blacklist wie oben angegeben gepflegt ist.

mkdir /lib/modules/`uname -r`/kernel/extras
cp fcpci.ko /lib/modules/`uname -r`/kernel/extras
depmod -a

Zur Nutzung von CAPI muss nach einem Systemstart noch der Command capiinit start ausgeführt werden. Dieses kann in das capiutils-Startskript eingebunden werden.

Außerdem muss eine „CAPI-enabled“ Version von YAPS genutzt werden (yaps-0.96.c4). Ein entsprechendes tar und eine vorkompilierte Version (yaps.capi) finden sich im Download-Bereich. Die ebenfalls im Download-Bereich liegende yaps.rc.capi kann benutzt werden. Unterschied zur sonst benutzten yaps.rc sind lediglich die beiden device-Einträge.

device  capi/1/<MSN>

Natürlich muss <MSN> noch durch die MSN des genutzten ISDN-Anschlusses ausgetauscht werden.

wget  http://www.jbackes.de/downloads/nagios/yaps-0.96.c4.tar.gz
wget  http://www.jbackes.de/downloads/nagios/yaps.capi
wget  http://www.jbackes.de/downloads/nagios/yaps.rc.capi
cp yaps.capi /usr/sbin/yaps
chmod 755 /usr/sbin/yaps
cp yaps.rc.capi /etc/yaps.rc

Außerdem muss der User „nagios“ in der Gruppe „dialout“ sein, damit er auch auf das ISDN-Interface zugreifen darf.

adduser nagios dialout

YAPS Einbindung in Nagios

In den contacts.cfg der wird festgelegt, wer und bei welchem Vorfall benachrichtigt wird.

define contact{
      contact_name                    name
      alias                           Vorname Nachname
      service_notification_period     24x7
      host_notification_period        24x7
      host_notification_options       n,d,u,r  
      service_notification_options    n,w,u,c,r
      service_notification_commands   notify-by-sms
      host_notification_commands      host-notify-by-sms
      pager                           0123456789
      }

Unter Ubuntu werden standardmäßig unter /etc/nagios-plugins/config die commands definiert. Hier muss definiert werden, (z.B.:in einer eigenen Datei jb_alarmierung.cfg) was per SMS an den Pager/das Handy geschickt wird.

####### SMS Alarmierung ###############
# 'notify-by-sms' command definition
define command{
	command_name	notify-by-sms
	command_line	PFAD/yaps $CONTACTPAGER$ "$NOTIFICATIONTYPE$: $HOSTNAME$/$SERVICEDESC$ is $SERVICESTATE$" 
	}

# 'host-notify-by-sms' command definition
define command{
	command_name	host-notify-by-sms
	command_line	PFAD/yaps $CONTACTPAGER$ "$NOTIFICATIONTYPE$ alert - Host $HOSTNAME$/$HOSTADDRESS$ is $HOSTSTATE$" 
	}

Besonderheit in großen Umgebungen

Bei großen Umgebungen, kann es vorkommen, dass mehrere SMS zeitgleich versendet werden sollen. Hier kann es dann zu Problemen können, das jeweils nur ein Prozess die ISDN-Karte nutzen kann. Um dies abzufangen und gleichzeitig eine Protokollierung über die versendeten SMS/Pager-Nachrichten zu erhalten, wird hier nicht direkt das Binary 'yaps' sondern ein selbstgeschriebenes Shell-Skript 'yaps.sh' aufgerufen.

Für den Fall, dass das die ISDN-Karte belegt sein sollte, ist ein retry intervall von 10 Versuchen in 10sec Abstand definiert.
yaps.sh:

#!/bin/sh
DATE=`date +%b" "%d" "%T`
LOGFILE="/opt/nagios/nec/var/log/pager.log"

ptarget=$1
pmsg=$2
declare -i RENUM=0
declare -i i=0

  /usr/bin/yaps -C /etc/yaps.rc $ptarget "$pmsg" 
  RC=$?
  while [ $i -lt 10 ]; do
    if [ "$RC" = "0" ]; then
i=10
else
	DATE=`date +%b" "%d" "%T`
	echo "waiting for device"
	echo "$DATE - -> waiting for device"
	/bin/sleep 10
	/usr/bin/yaps  -C /etc/yaps.rc $ptarget "$pmsg" 
  	RC=$?
  	RENUM=$i+1
  	echo "$DATE - RETRY $RENUM -> $ptarget - $pmsg" >> $LOGFILE
    fi;
    i=$i+1
  done
  DATE=`date +%b" "%d" "%T`
  if [ "$RC" = "0" ]; then
	echo "$DATE - SUCCESS -> $ptarget - $pmsg" >> $LOGFILE
  else
    echo "$DATE - ERROR -> $ptarget - $pmsg" >> $LOGFILE
  fi;
exit $RC


JB 2008/11/27 17:35

sms-alarmierung_mit_yaps.txt · Zuletzt geändert: 2015/05/31 13:36 von admin