Script para Monitoramento
Publicado por Marcelo Donato de Lemos Rossato 10/07/2004
[ Hits: 27.628 ]
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.
#!/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);
}
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - ENVIA MSG CASO O USUÁRIO PASSE 90% DA SUA QUOTA
Alteração de Senha do Mysql (sem saber a senha anterior).
Gerenciamento do Samba com Dialog
Acompanhamento de log squid com hora real
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como implementar Raid (0, 1, 5, 6, 10 e 50)
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... (1)
Como programar um sistema de controle para distribuições linux em c? (3)









