Script para Monitoramento

Publicado por Marcelo Donato de Lemos Rossato 10/07/2004

[ Hits: 27.210 ]

Download monitor.sh




Muitas vezes, temos que disponibilizar serviços que não podem ficar fora do ar nem por alguns minutos durante o dia. Para atingir esses resultados, é necessário ter um sistema muito bem instalado e configurado e, além disso, utilizar um script que avise o administrador da rede (via e-mail) que algo não está funcionando bem e precisa ser arrumado. Foi escrito um script em PERL que verifica diversos serviços, conectividade e log de sistemas, entre eles:

1) Serviço sendmail, named, radiusd e httpd.
2) Teste de ping e traceroute.
3) Conectividade e host remoto.
4) Informações de hd e memória.
5) Últimas linhas dos log's.

Segue abaixo o código que pode ser alterado, conforme necessidade. É claro que qualquer alteração, deve manter o nome do autor e os direitos autorais do script.


Pronto!!! Depois de digitar essas linhas em um editor de texto, salve o arquivo e transforme em executável com o comando abaixo:

chmod 700 nomearquivo

Depois disso, basta colocar o arquivo no cron do usuário root para rodar de 10 em 10 minutos e receber os dados do sistema em seu e-mail.

  



Esconder código-fonte

#!/usr/bin/perl

#=========================================================================================
# Script para monitoramento de sistemas
# Desenvolvido por Alexandre Pedroso
# http://www.aplinux.com.br - aplinux@ig.com.br
#=========================================================================================

system("rm -rf /root/monitor.txt");
system("echo '============================================================' > /root/monitor.txt");
system("echo 'VERIFICAÇÃO DOS SISTEMAS DA EMPRESA' >> /root/monitor.txt");
system("echo '============================================================' >> /root/monitor.txt");
system("echo -n 'SERVIDOR LINUX xxx.xxx.xxx.x - ' >> /root/monitor.txt ; date >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'SERVIÇOS ATIVOS:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n '1) ' >> /root/monitor.txt ; /etc/init.d/sendmail status >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n '2) ' >> /root/monitor.txt ; /etc/init.d/named status >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n '3) ' >> /root/monitor.txt ; /etc/init.d/radiusd status >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n '4) ' >> /root/monitor.txt ; /etc/init.d/httpd status >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'FILA DE E-MAIL:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n 'Mensagens na fila: ' >> /root/monitor.txt ; mailq | wc -l >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'TESTE DE PING: ' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '1) Roteador Link - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '2) Roteador Cisco - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '3) Servidor Windows 2000 - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '4) Servidor Linux - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '5) Servidor Externo - xxx.xxx.xxx.x' >> /root/monitor.txt");
system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '6) UOL - HOST REMOTO' >> /root/monitor.txt");
system("ping -c 5 www.uol.com.br >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'USUÁRIOS CONECTADOS:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo -n 'Total de usuários conectados: ' >> /root/monitor.txt ; radwho | wc -l >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("radwho >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'INFORMAÇÕES DO HD:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("df -h >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo 'INFORMAÇÕES DE MEMÓRIA:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("free >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '20 ÚLTIMAS LINHAS DO LOG DO MAIL SERVER:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("tail -20 /var/log/maillog >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '20 ÚLTIMAS LINHAS DO LOG DO RADIUS SERVER:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("tail -20 /var/log/radius.log >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '20 ÚLTIMAS LINHAS DO LOG DO SISTEMA:' >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("tail -20 /var/log/messages >> /root/monitor.txt");
system("echo >> /root/monitor.txt");
system("echo '============================================================' >> /root/monitor.txt");
system("echo 'TESTES REALIZADOS COM SUCESSO....' >> /root/monitor.txt");
system("echo '============================================================' >> /root/monitor.txt");
$ncon==0;
open (arq, "/root/monitor.txt");
@body= < arq >;
close (arq);
foreach $item (@body) {
$ncon=$ncon+1;
}
$ncon=$ncon-1;
if ($ncon > 5) {
open(MAIL,"|/usr/sbin/sendmail -t");
print MAIL "To: seuemail\@seudominio.com.br\n";
print MAIL "cc: seuemail\@seudominio.com.br\n";
print MAIL "From: root\@seudominio.com.br\n";
print MAIL "Subject: Monitoramento dos Sistemas\n\n";
print MAIL "-" x 75 . "\n\n";
foreach $item (@body) {
print MAIL $item;
}
print MAIL "-" x 75 . "\n\n";
close(MAIL);
}

Scripts recomendados

Clientes TCP

Postfix - Listar usuários com over quota

Raiz Quadrada (Square Root) para Bash

Administração de Usuários

Descompactar vários arquivos ao mesmo tempo de um diretório específico


  

Comentários
[1] Comentário enviado por andrack em 14/07/2004 - 09:06h

Kra me desculpe se estou sendo ignorante, mas esse script não ficaria melhor se fosse todo ele feito em Shell Script?


[2] Comentário enviado por pepsue em 31/07/2004 - 23:36h

Teria como ele, em vez de mandar e-mail, ligar para o meu celular usando o modem discado?
Porque aqui a internet vive caindo, então nao adiantaria usar e-mail.

[3] Comentário enviado por everton_mello em 01/02/2005 - 16:45h

Com certeza, andrack, vou trabalhar num dentro do shell script e vou publicar aqui para todos, e vai aberto a melhoria por parte de todos que puderem colaborar

[4] Comentário enviado por isaacson em 28/02/2005 - 00:57h

estou testando com o slackware mas não funcio nou o que devo fazer, e tem como enviar para o celular vivo.

[5] Comentário enviado por mastergeekcd em 01/10/2005 - 04:07h

Nossa que legal |impressionado|


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts