Opa, este é mais um scriptzinho que eu fiz para gerenciar o rendimento de um webserver. Como todos sabem, eu já disse aqui várias vezes que utilizo um serviço da minha operadora para receber SMS no meu celular. Este serviço é um email ( seunumero@operadora.com.br ) que quando recebe uma mensagem, a transforma em um SMS. Assim, você a recebe no celular, como as mensagens que recebe via WEB, em todas as operadoras.
O grande problema, é, que, como o email vira um SMS, ele sofre das limitações de caracteres deste tecnologia, ou seja, 150. Mas isto não é problema, já que as mensagens são mesmo só para avisar de algo.
Mesmo assim, o script pode ser utilizado para mandar as mensagens para o seu email, onde você irá ver o que está acontecendo, numa boa, sem problema algum :-)
O código se encontra abaixo :-)
#!/bin/sh
# variaveis editaveis
MAXLOAD=20 # maximo load aceitavel na sua maquina/host
CRITICALLOAD=50 # load critico ( queda de rendimento maquina )
EMAIL="seuemail@operadora.com.br"
LOGSPATH="pathto/logs"
# FILTRANDO O UPTIME PARA PEGAR O LOAD E OUTROS
LOAD=$(cat /proc/loadavg | awk -F" " '{print $1}')
FRACAO=$(echo $LOAD | awk -F"." '{print $2}')
INTEGER=$(echo $LOAD | awk -F"." '{print $1}')
STATUS=$(echo "$MAXLOAD < $INTEGER.$FRACAO" | bc)
CRITICALSTATUS=$(echo "$CRITICALLOAD < $INTEGER.$FRACAO" | bc)
HORA=$(date +%H:%M)
# TESTES ( ONDE O EMAIL/LOG EH GERADO )
if [ $CRITICALSTATUS = 1 ]; then
echo "$HORA|CRITICAL|$INTEGER.$FRACAO" >> $LOGSPATH/load
if [ $(cat ~/db/emailload) = 1 ]; then
echo "Load Critico : $INTEGER.$FRACAO" | mail -s"Load Critico"
$EMAIL
expr $(cat $LOGSPATH/emailload) + 1 > $LOGSPATH/emailload
else
if [ $(cat $LOGSPATH/emailload) = 6 ]; then
echo 1 > $LOGSPATH/emailload
else
expr $(cat $LOGSPATH/emailload) + 1 > $LOGSPATH/emailload
fi
fi
finaliza
exit
fi
if [ $STATUS = 0 ]; then
echo "$HORA|NORMAL|$INTEGER.$FRACAO" >> $LOGSPATH/load
if [ $(cat $LOGSPATH/emailload) -gt 1 ]; then
echo "Load Normalizado : $INTEGER.$FRACAO" | mail
-s"Load Normalizado" $EMAIL
echo 1 > $LOGSPATH/emailload
fi
else
echo "$HORA|ALTO|$INTEGER.$FRACAO" >> $LOGSPATH/load
if [ $(cat $LOGSPATH/emailload) = 1 ];then
echo "Load Alto : $INTEGER.$FRACAO" | mail -s"Load Alto"
$EMAIL
expr $(cat $LOGSPATH/emailload) + 1 > $LOGSPATH/emailload
else
if [ $(cat $LOGSPATH/emailload) = 6 ]; then
echo 1 > $LOGSPATH/emailload
else
expr $(cat $LOGSPATH/emailload) + 1 > $LOGSPATH/emailload
fi
fi
fi
O esquema é o mesmo. Coloque isto no cron, e você receberá os avisos sempre que o load estiver em um patamar acima dos que você configurou :-)
ATUALIZAÇÃO : sim, eu vi depois que publiquei que há algumas coisas que devem ser mudadas, principalmente, porque não preciso das variáveis INTEGER E FRACAO. Mas elas existem por causa da primeira versão do script, que precisava disto.
Assim, quem quiser mudar o bichinho e me mandar o mesmo para publicação, tudo bem. De qualquer jeito, ainda esta semana ou hoje mesmo ( maior folga ), estarei colocando on line o script para download.