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