technik:gateways:eigenueberwachung

Eigenüberwachung der Gateways

Hier ist nun mein Monitoring/Überwachungsspricht das lokal auf einem Server laufen kann. Ich nenne es check_tasks und es liegt in /usr/local/bin/ Gestartet wird es z.B. via /etc/rc.local

 /usr/local/bin/check_tasks &

Hier das Script, wenn es mit einem Parameter gestartet wird (check_tasks x), läuft ein einfacher Debug Mode, wenn man zufrieden ist, kann es in rc.local eingetragen werden oder mit check_tasks & gestartet werden. Verbesserungen usw. sind willkommen, am besten auf der Gateway Mailingliste.

 #! /bin/bash
 #       Alle wichtigen Task pruefen und bei Bedarf neu starten und per Email informieren
 
 #       Variablen
 logfile=/var/log/check_tasks
 email=albi@freifunk-weinstadt.de
 dnsip=172.21.28.1
 dnsanfrage=web.de
 dnsback=212.227
 norestart=0
 vpnerror=0
 vpndown=1
 
 if [ -n "$1" ]; then
     testmode=$1
     echo "start Testmode"
 fi
 if [ -z "$testmode" ]; then
     #   Bei Start erst mal warten
     sleep 2
     #   Logfile kuerzen
     mv -f $logfile $logfile.old
     tail -n 1000 $logfile.old >$logfile
     echo "Start $0"
     echo "$( date ) Start $0" >>$logfile
 fi
 
 #       Endlosschleife
 while : ; do
 
     #   Antwort auf "" setzen
     antwort=""
 
 ##	dnsmasq pruefen
     prg="dnsmasq"
     back=`pgrep $prg`
     echo -n "check $prg: "
     if [ -z "$back" ] ; then
 	if [ $norestart -le 1 ] ; then
     	    echo "Error"
 	    antwort+="Fehler: $prg nicht gestartet\nFehler: $back\n\n"
     	    echo -n "Restart $prg: " >>$logfile
     	    date >>$logfile
 	    service $prg restart
 	    sleep 5
 	else
 	    echo "Error (Norestart = $norestart)"
 	fi
     else
         echo "OK"
     fi
 
 ##	dnsmasq dns Anfragen pruefen
     prg="dnsmasq"
 #    back=`dig @$dnsip +noall +answer $dnsanfrage`
     back=`nslookup $dnsanfrage $dnsip`
     zahl=`echo $back | grep -c $dnsback`
     echo -n "check DNS-Anfrage: "
     if [ "$zahl" -gt 0 ] ; then
 	if [ $norestart -le 1 ] ; then
     	    echo "Error"
 	    antwort+="Fehler: $prg antwortet nicht auf DNS-Anfragen\nFehler: $back\n\n"
     	    echo -n "Restart $prg: " >>$logfile
     	    date >>$logfile
 	    service $prg restart
 	    sleep 5
 	else
 	    echo "Error (Norestart = $norestart)"
 	fi
     else
         echo "OK"
     fi
 
 ##	openvpn pruefen
     prg="openvpn"
     #ip=`ip -o -4 addr list tun0 | awk '{print $4}' | cut -d/ -f1`
     ip=`ip -o -4 addr list tun0 | awk '{gsub("/.*","",$4); print $4}'`
     echo -n "check ping web.de: "
     back=$(ping -c2 -I $ip web.de 2>&1)
     zahl=$?
     if [ "$zahl" -gt 0 ] ; then
         echo "Error"
 	echo -n "check ping 8.8.8.8: "
 	back=$(ping -c2 -I $ip 8.8.8.8 2>&1)
 	zahl=$?
     fi
     if [ "$zahl" -gt 0 ] ; then
         if [ $norestart -le 1 ] ; then
     	    echo "Error"
     	    antwort+="Fehler: $prg antwortet nicht auf ping\nFehler: $back\n\n"
 	    echo -n "Restart $prg: " >>$logfile
     	    date >>$logfile
 	    service $prg restart
     	    ((vpnerror++))
 	    # nach Neustart laengere Pause
     	    if [ $vpnerror -gt 1 ] ; then
         	# Gateway deaktivieren
         	batctl gw off
 		vpnerror=0
 		vpndown=1
     	    fi
 	    sleep 5
 	else
 	    echo "Error (Norestart = $norestart)"
 	fi
     else
         if [ $vpndown -gt 0 ] ; then
             # Gateway deaktivieren
             batctl gw server
             vpndown=0
 	fi
 	vpnerror=0
         echo "OK"
     fi
 
 
 #       Email senden wenn Fehler auftrat
     if [ -n "$antwort" ]; then
         norestart=5
         echo "Sende Email an $email"
         echo -n "Sende Email an $email: " >>$logfile
         date >>$logfile
         echo -e "$antwort" | mutt -s "Fehler auf Server $HOSTNAME" $email
     fi
 
 if [ $norestart -gt 0 ] ; then
     ((norestart--))
 fi
 if [ -z "$testmode" ]; then
     sleep 50
 else
     echo "Norestart = $norestart"
 fi
 sleep 10
 
 done
  • technik/gateways/eigenueberwachung.txt
  • Zuletzt geändert: vor 6 Jahren
  • von 127.0.0.1