Sem Queda

Publicado por Diego Silva 19/01/2004

[ Hits: 4.715 ]

Homepage: http://www.diegosilva.net

Download semqueda.pl




Devido aos problemas que tive no passado referente a sobrecarregamento do cpu de meus servidores eu fiz um script eu checa o load average e envia um e-mail  e/ou reinicia o sistema em caso do sobrecarregamento do cpu.

  



Esconder código-fonte

#!/usr/bin/perl

#############################################
################Sem queda 1.0################
#############################################
#   Checa o Nivel de Processamento do CPU.  #
# E o reinicia em caso de sobrecarregamento #
# As ações do mesmo são enviadas por e-mail #
#     para o Administrador do Sistema.      #
#                    #
#    Recomendo que o script seja agendado   #
#         na crontab do Sistema             #
#############################################
#Escrito por Diego Silva(djspeed@bol.com.br)#
#############################################

# E-mail do Administrador do Sistema
$emailadmin = "djspeed\@bol.com.br";
# não tire a \ antes do @

# Load Average Máximo
$loadaverage = "10.0";

# Reiniciar o Sistema quando o load average máximo for atingido?
# 1 para sim e 0 para não
$reiniciar = "1";

# Path do SendMail
$sendmail = "/usr/sbin/sendmail";


#############################################
###########Não Mexa Em mais Nada#############
#############################################

print "=================================\n";
print "==========Sem Queda V1.0=========\n";
print "=================================\n";
print "Verificando o Sistema....\n\n";

($buf1,$buf2,$buf3)=&get_uptime_info;
print "Load Average Maximo: $loadaverage\n";
print "Load Average Atual : $buf2\n\n";
$hostname = qx/hostname/;

if($buf2 < $loadaverage) {
print "Sistema trabalhando normalmente\n";

print "=================================\n";
print "Sistema Escrito por Diego A. Silva\n";
print "E-mail de Contato: djspeed\@bol.com.br\n";
print "=================================\n"
}else{
print "Sistema sobrecarregado....\n";
print "Enviando e-mail ao administrador...\n";

open(MAIL,"|$sendmail -t");
print MAIL "To: $emailadmin\n";
print MAIL "From: $emailadmin\n";
print MAIL "Subject: Sistema Sobrecarregado [Sem Queda 1.0]\n\n";
print MAIL "Caro Administrador,\n";
print MAIL "O Sistema de $hosname está sobrecarregado.\n";
print MAIL "Trabalhando atualmente com o Load Average de $buf2.";
if($reiniciar eq"1"){
print MAIL "O Sistema está sendo reiniciado.\n";
}
print MAIL "\nSem Queda V1.0";
close (MAIL);


print "Reiniciando o Sistema...";
system("reboot");
}

#############################################

sub get_uptime_info {
my ($uptime,$load,$users,$res,@buf,$buf);

  if ($^O=~ /win/i) { 
    $uptime=$load=$users='<small>ERRO</small>';
  } else {

    eval {$res=`uptime`;};

    if (($@) || ($res eq '') ) {
      $uptime=$load=$users='<small><font color=red>Nao foi possivel detectar</font></small>';
    } else {
      chomp($res);

      if ($res=~ s/\,*\s*load\s*averages*\s*\:*\s*(.*)//i) {
        $buf=$1;
        $buf=~ s/^\s+//;
        @buf=split(/,*\s+/,$buf);
        $load="$buf[0]";
      } else {
        $load='<small>Não foi possivel detectar</small>';
      }
      
      if ($res=~ s/\,*\s*(\d+)\s+user\(*s*\)*//i) {
        $users=$1;
      } else {
        $users='<small><font color=red>Nao foi possivel detectar</font></small>';
      }


      if ($res=~ /up\s*\:*\s*(.*)\,*/) {
        $uptime=$1;
        $uptime=~ s/day/day/igs;
        $uptime=~ s/min/minute/igs;

        $uptime=~ s/(\d+)\:(\d+)/$1 hour\(s\) $2 minute(s)/igs;
      } else {
        $uptime='<small>Nao foi possivel detectar</small>';
      }
    }
  }
  return ($uptime,$load,$users);
}

#############################################

Scripts recomendados

Verificação de IP em blacklists

Introdução a Persistência de Estrutura de Dados em Perl

chpasswd.cgi

Biblioteca CGI-LIB.PL

Ler uma sequências fasta e separar por tamanho [Bioinformática]


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts