quarta-feira, 21 de maio de 2014

Monitorando a infraestrutura

Recentemente, passei por muitos problemas com a infraestrutura da Oracle (e a falta de interesse do suporte em resolvê-los). Para assegurar-me de que não havia um problema de rede, resolvi monitorar dois serviços básicos: o banco e o ldap.

Usando Perl e o netcat (comando nc no Linux), escrevi um pequeno script para monitorar as conexões do servidor de aplicações.

#!/usr/bin/perl

$|=1;
my $dump;
my %hosts=(srv1=>1521,srv2=>389);
my $out;
for my $host (keys %hosts) {
  my $port=$hosts{$host};
  $out=`nc -z $host $port`;
  if($out!~/succeeded/) {
    open($dump,'>>', '/tmp/monitor.txt');
    print $dump `date`;
    print $dump "$host $port Failed\n";
    close($dump);
  }
}

O hash %hosts associa cada servidor a uma porta e o comando "nc -z" realiza o trabalho de testar a conexão. Se o resultado não contiver a palavra "succeeded", imprime-se a data e a combinação de servidor e porta que falhou.

Ele registra apenas as tentativas mal-sucedidas para evitar que o arquivo monitor.txt cresça muito.

Adicionei uma linha à cron, para executar o script uma vez por minuto:

* * * * * /home/forinti/monitor.pl

E assim constatei que meus problemas nada tinham a ver com a rede.

Um comentário:

Anônimo disse...

Para um olho mais critico na infra, NewRelic neles ...

Mesmo no plano basico (free) te fornece insight suficiente sobre a saude dos teus servidores.