Monitoring

Dienst neustarten, wenn er nicht mehr läuft:

Datei /root/scripts/monitorssh.sh mit folgendem Inhalt erstellen:

#!/bin/sh
# Stellt sicher, dass sshd immer wieder gestartet wird.
if [ $(ps -A | grep -c sshd) = 0 ];
then
     /etc/init.d/sshd start
fi

crontab –e starten und Eintrag machen:

*/5 * * * * /root/scripts/monitorssh.sh 


Selbstheilungsdatei mit 3 Startversuchen, danach Serverneustart:

selbstheilung.sh
#!/bin/bash
#selfhealing.sh
#Selbstheilungversuch eines Dienstes
#wenn der Dienst nicht mehr reagiert, dann wird der Dienst 3mal mit zunehmender Verzögerung von 1 Minute neu gestartet.
#wenn das nicht klappt, dann wird der Server neu gestartet.
#wiederkehrender Aufruf per cron, nagios oder prtg
dae=postfix
#Verzögerung
verz=60
#######################
function watchprc()
{
 #echo "in watchprc"
  service $dae status 2>&1 1>/dev/null
 f=$?
if [  $f -eq 0 ]; then exit 0
else
 return $f
fi
}
#######################
function startprc()
{
  #echo "in startprc"
    service $dae start 2>&1 2>/dev/null
    watchprc
    echo $verz Verzögerung, danach erneuter Versuch $dae zu starten...
    sleep $verz
}
#######################
###Einsprung
watchprc
#versuche den Dienst 3mal mit wachsender Verzögerung
#zu starten, dann starte den Server neu
for i in `seq 1 3`
 do
  startprc $verz
  #jeden Versuch um 60s mehr verzögern
  let "verz +=60"
 done
  if [ ! $f -eq 0 ]; then
   echo "$0: dienst $dae konnte auf $HOSTNAME nicht gestartet werden,versuche reboot ...!!!"
   logger "$0: dienst $dae konnte auf $HOSTNAME nicht gestartet werden, versuche reboot ...!!!"
  # echo "$0 konnte $dae auf $HOSTNAME nicht starten, deshalb reboot ..." | mail admin@mydom.ain -s rebootversuch
  reboot
  fi