sexta-feira, 29 de novembro de 2013

Script que Monitora processos que fica ativo permanentemente ( Linux )


#!/bin/sh
# - monitora um conjunto de processo que tenham que ficar ativos
#   permanentemente.
# - se o processo estiver parado, o monitor ira re-inicializa-lo
# - os processos monitorados deverao ser listados na variavel
#   PROCESSOS
#

LOG=/var/log/monitora.log
MAIL=/tmp/monitora.msg
DATA=`date`
SERVER=`uname -n`

# relacao dos processos que serao monitorados
PROCESSOS="named squid"

# destinatarios do email de aviso
DESTINATARIOS="email@meudominio.com.br"

log_msg() {
   echo "$DATA - $1" >> $LOG
   echo "$DATA - $1" >> $MAIL
}

envia_email() {
   for MAILTO in $DESTINATARIOS
   do
      mail -s "Erro de processo: $SERVER" $MAILTO < $MAIL
   done
}

get_proc() {
   RETURN=1
   local PROC=$1
   RUN=`ps -C $PROC | grep $PROC`
   if [ "$RUN" == "" ]; then
      RETURN=0
   fi
}

start_proc() {
   local PROC=$1
   #
   # faz uma correcao para os processos com nome diferente
   # do arquivo no init.d
   [ "$PROC" == "named" ] || PROC="bind9"

   log_msg "+++ re-inicializando $PROC..."
   /etc/init.d/$PROC start >> $LOG 2>> $LOG
}


#
# Principal
#

# limpa arquivo de e-mail
  >$MAIL

for p in $PROCESSOS
do
   get_proc $p
   if [ $RETURN = 0 ]; then
      log_msg "Erro: processo $p parado"
      start_proc $p
      envia_email
   fi
done

Nenhum comentário:

Postar um comentário