Menu Principal

sexta-feira, 16 de setembro de 2011

NAGIOS - notificação via SMS

Fonte: http://meutecnico.com/blog/arquivo/358
Sem dúvida alguma, um ambiente de TI monitorado é muito importante para manter a disponibildade dos serviços de email, sistemas, internet e etc., e em caso de problemas poder rapidamente resolve-los, mas como ser notificado de um problema no sistema em qualquer lugar? uma alternativa é ser avisado direto no celular via SMS, e é sobre isso que trata este tutorial.

Para envio de mensagem via SMS você deve ter um gateway de SMS na sua rede, ou contratar o serviço de um terceiro. Vamos tratar neste tutorial a segunda opção.
Primeiro você deve contratar o serviço de gateway de SMS, eu uso o serviço da Human Mobile ( http://www.human.com.br/sms ) , você pode criar uma conta gratuita para testar o sistema.
Criado a conta, basta seguir os passos abaixo
1. Instalar os modulos do PERL usados pelos script de envio de SMS
perl -MCPAN -e ‘install URI::Escape’
perl -MCPAN -e ‘install LWP::Simple’
obs. Caso seja a primeira vez que esteja instalando um modulo perl, ele vai fazer algumas perguntas, basta dar as respostas padrão.
2. Faça o download do script sendsms.pl na seção de downloads (http://meutecnico.com/blog/downloads) descomprima com o comando unzip e coloque o script em /usr/local/nagios/libexec
3. De permissão de execução do arquivo
chmod +x /usr/local/nagios/libexec sendsms.pl
4. Dentro de /usr/local/nagios/libexec faça um teste de envio de mensagem usando o comando abaixo, alterando para o numero do seu celular, note que sempre o numero segue o código do pais+DDD+numero
./sendsms.pl 551199999999 "Mensagem de teste…"
Eu recebo as mensagens em no máximo 1 minuto, caso demorar muito e acabar não recebendo a mensagem, verifique se sua operadora de telefonia nao esta com problema e também verifique se foi feito corretamente os passos 1 e 3
5. Crie o comando no nagios conforme o exemplo abaixo
define command{
command_name    notify-by-sms
command_line    $USER1$/sendsms.pl $CONTACTPAGER$ "*Monitoramento* notif.: $NOTIFICATIONTYPE$ Svc: $SERVICEDESC$ Equip.: $HOSTNAME$ Descr: $HOSTALIAS IP: $HOSTADDRESS$ Estado: $SERVICESTATE$ Data/Hora: $DATE$ / $TIME$ info: $SERVICEOUTPUT$"
}
define command{
command_name    host-notify-by-sms
command_line    $USER1$/sendsms.pl $CONTACTPAGER$ "*Monitoramento* $NOTIFICATIONTYPE$  equipamento: $HOSTNAME$ – $HOSTALIAS$ IP: $HOSTADDRESS$ Data/Hora: $DATE$ / $TIME$ info: $SERVICEOUTPUT$"
}
6. No arquivo de contatos do nagios, adicione o celular (seguindo o padrão código do pais+DDD+numero) e adicione o comando para o contato receber sms conforme exemplo abaixo
define contact{
contact_name                    Cleiton_Souza
alias                                   admin
contactgroups                   Administradores, Supervisors
host_notification_period        24×7
service_notification_period     24×7
host_notification_options       d,u,r,f,s
service_notification_options    w,c,r,f,s
host_notification_commands host-notify-by-email,  host-notify-by-sms
service_notification_commands   notify-by-email, notify-by-sms
email                           cleitonsouza01@gmail.com
pager                           551199999999
}

11 comentários:

  1. Parabéns pelo post, há muito tempo tento configurar o envio de SMS no nagios.
    O arquivo sendsms.pl está disponível em outro lugar? O link está com erro.
    Abraço e obrigado.

    ResponderExcluir
  2. Realmente o link está quebrado.
    Tente nesses links, mas adianto que não testei:

    http://www.sms-integration.com/p_110-nagios-sms.html
    ou
    http://blog.simon-meggle.de/nagios-sms-script/

    ou
    http://www.freedownload3.com/software/sendsms_pl.html

    abraço

    ResponderExcluir
  3. Pessoal segue abaixo o sendsms.pl

    #!/usr/bin/perl -w

    use strict;

    #Informe seu usuario human gateway
    my $account = "sua conta";

    #Informe sua senha human gateway
    my $code = "sua senha";

    use URI::Escape;


    ##### Nao Precisa Modificar Abaixo #####
    ########################################

    #o primeiro argumento eh o celular de destino da mensagem que o Nagios insere automaticamente
    my $mobile = "$ARGV[0]";

    #o segundo argumento eh o texto do sms
    my $rawmsg = "$ARGV[1]";

    #o texto deve ser codificado para ser enviado na URL
    my $text = uri_escape($rawmsg);

    #Envia a mensagem
    use LWP::Simple;
    get("http://system.human.com.br:8080/GatewayIntegration/msgSms.do?dispatch=send&account=$account&code=$code&to=$mobile&msg=$text");

    #Descomente para receber o status de retorno da mensagem
    #print "$text\n";

    ResponderExcluir
  4. Olá, Pessoal sera que alguém saberia me dizer se para enviar e-mail eu tenho que ter um postfix instalado fazendo o papel do smtp ou o proprio nagios ja envia o e-mail por alguma ferramenta?
    Obrigado.

    ResponderExcluir
  5. Pessoal me antecipei e achei a solução para o nagios enviar e-mail é necessário instalar os pacotes apt-get install heirloom-mailx postfix

    Att.

    ResponderExcluir
  6. Bom dia Pessoal, não estou conseguindo instalar os módulos PERL, o erro esta abaixo...utilizo o Fedora, alguém sabe o que poderia ser?
    perl -MCPAN -e 'install URI::Escape'
    Can't locate CPAN.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .).
    BEGIN failed--compilation aborted.

    Abraços

    ResponderExcluir
    Respostas
    1. Tenta instalar pelo apt-get. Aqui na minha empresa não consigo instalar pelo CPAN devido a regra no firewall imposto pela equipe de segurança, a unica forma é esta aqui em em baixo.

      LWP::Simple
      apt-get install libwww-perl

      URI::URL
      apt-get install liburi-perl

      Excluir
  7. Este comentário foi removido pelo autor.

    ResponderExcluir
  8. Olá,

    Aqui só está enviando quando o serviço cai, quando da o recovery não envia sendo que o serviço pelo email ta ok, quando cai manda o email e o sms e qd levanta somente o email.

    ResponderExcluir
  9. Consegui fazer o script funcionar porém o nagios não envia as notificações, alguém poderia mostrar como esta o commands.cfg? tanto para e-mail quanto para sms.
    para e-mail estou usando o postfix com gateway gmail o script funciona e envia email quando eu faço, mas o nagios não envia as notificações, o que será?

    ResponderExcluir