Integrando Nagios com Asterisk

gnu

Descrição das atividades que desenvolvi para integrar a ferramenta Nagios com o servidor Asterisk, realizando ligações quando um host/serviço estivesse down.

[ Hits: 21.462 ]

Por: Sidney Alexandre Pagel em 01/01/2013


O início



Olá a todos.

Depois de prolongada ausência causada pelos percalços, que frequentemente a vida nos apresenta, volto a contribuir.

A experiência que gostaria de descrever trata-se da integração entre o Nagios, poderoso e flexível software de monitoramento, bem conhecido de todos que algum dia mexeram com redes e/ou infraestrutura de TI, e o Asterisk, servidor VoIP, flexível, robusto e estável, com características que mesmo algumas das centrais telefônicas mais caras do mercado ainda não apresentam.

Temos uma rede de médio porte na empresa onde trabalho na área de servidores/infraestrutura, e temos usado o Nagios para realizar o monitoramento dos hosts/serviços que são críticos. Entre outras coisas, temos também um servidor Asterisk, destinado a fornecer ramais VoIP onde a infraestrutura de telefonia não alcança, mas a infra de rede tem cobertura.

Em uma das conversas que tivemos no setor, surgiram algumas reclamações a respeito da falta de informações quando nos ausentamos da empresa. Quando um host/serviço cai, só ficávamos sabendo quando algum funcionário nos ligava, informando que determinado software ou serviço, estava inacessível.

Muitas vezes, já havia se passado várias horas desde a queda, que poderia ter ocorrido em um momento em que poucas pessoas, ou mesmo ninguém, estivesse usando o serviço. Desse modo, se ficássemos sabendo de primeira mão, poderíamos resolver o problema antes que o mesmo impactasse na produção.

Resolvemos, então, aumentar o leque de opções que o Nagios dispunha para nos avisar, que no momento estava resumido a enviar e-mails (o que, obviamente, não é lá muito eficiente).

A primeira opção foi fazer com que ele nos enviasse um SMS, solução amplamente abordada Internet afora, com várias "receitas de bolo". Implementamos a solução, que também se mostrou um tanto deficiente, pois a rede da operadora móvel algumas vezes falha, e a mensagem acaba não sendo recebida, ou, muitas vezes, as mensagens são configuradas para serem recebidas de maneira silenciosa, e, quando notávamos o recebimento da mesma, o problema já tinha longa data de existência.

Levantei, então, a possibilidade do Nagios realizar uma ligação para celulares previamente determinados, utilizando para isso o servidor Asterisk. Entre sugerir e por mãos à obra foram minutos, e logo me dediquei à tarefa.

Todos que trabalham/trabalharam com Asterisk sabem que os arquivos inseridos em /var/spool/asterisk/outgoing são processados, gerando ligações, tendo apenas que obedecer alguns critérios para que isso ocorra.

Eis um exemplo de um arquivo funcional:

Channel:DAHDI/g1/XXXXXXXX
Application: MP3Player
Data: /var/lib/asterisk/sounds/som.mp3

Este arquivo, quando inserido no /var/spool/asterisk/outgoing, usará o canal DAHDI/g1, efetuando ligação para o número XXXXXXXX, e quando a ligação for atendida, executará o arquivo "som.mp3".

Pois bem, a base da ideia é essa.

Quando um host crítico cair, o Nagios deve compor um arquivo com estas características e enviar para o Asterisk, e o mesmo realizará a ligação, executando o arquivo MP3, o qual deve conter uma mensagem que explique qual foi o host/serviço que caiu.

    Próxima página

Páginas do artigo
   1. O início
   2. Atacando o problema
   3. O script
Outros artigos deste autor

Mais sobre terminais leves....

Configurando um domínio pelo serviço ipturbo empresarial (Brasil Telecom)

O software livre na administração pública

NagVis - Gestor de mapas pra lá de especial

Pequena solução para backup em redes mistas

Leitura recomendada

Configurando o NSCA no Nagios

Configuração do SSL no Apache

Autofs no Slackware

Monitoração com Zabbix no Debian Squeeze

Deixando a inicialização do Slackware com kernel 2.6 totalmente gráfica

  
Comentários
[1] Comentário enviado por fabio em 01/01/2013 - 13:50h

Meus parabéns, ótimo trabalho!

Primeiro artigo do ano no VOL já começa com uma solução super criativa.

[2] Comentário enviado por gnu em 01/01/2013 - 23:43h

Muito Obrigado! Vindo de uma pessoa com o conhecimento que você tem, tenho que imprimir e enquadrar seu elogio.. hehehe

[3] Comentário enviado por danniel-lara em 02/01/2013 - 10:02h

Parabéns pelo Artigo muito bom mesmo

[4] Comentário enviado por Rafael Oliveira em 02/01/2013 - 12:04h

Parabéns gnu!
Realmente muito criativa e eficiente a sua ideia.

[5] Comentário enviado por cesar.info em 03/01/2013 - 20:40h

Imaginando algo mais "mirabolante", daria pra pensar em criar alguns comandos de gerenciamento do servidor através da URA, etc.

Mandou bem, muito bem.

Abs.

[6] Comentário enviado por feimsacuel em 05/01/2013 - 16:28h

Muito bom essa solução, gostaria de saber se vc sabe como monitorar o link R2 das placas khomps pelo snmp, mas valeu pelas dicas.

[7] Comentário enviado por fernandotrilha em 24/03/2014 - 16:56h

Sidney, estou implementando isso aqui na empresa, mas não estou conseguindo fazer o Nagios executar o comando notify-host-by-fone;
Consegue me dar uma força?

[8] Comentário enviado por thla_88 em 10/01/2015 - 17:53h


Sidney ótima postagem, estou estudando a fundo o nagios e o asterisk, paguei duas cadeiras que implementavam essas maravilhosas ferramentas. Gostaria de saber como vc fez o script do envio automático do SCP para que toda vez o nagios podesse alertar o asterisk se um host está DOWN ou UP?

[9] Comentário enviado por gnu em 12/01/2015 - 10:22h


Olá. O script no artigo é o astnagios.sh. Dentro dele, é efetuada a cópia do arquivo .call diretamente para a pasta outgoing no servidor asterisk. No entanto, se fosse implementar a solução novamente hoje, faria de maneira diferente, com um banco de dados registrando as ligações, e forçando o receptor da chamada a registrar o recebimento da mesma através de alguma opção na URA. Na época, eu criei os arquivos up e down de cada host, e hoje também faria diferente, uma vez que é possível utilizar o serviço da google para enviar texto com o nome do servidor e receber o arquivo de áudio. Se tiver interesse em implementar a solução de maneira mais "elegante", me passe seu endereço de email, que lhe enviarei meu skype id. Gostaria de discutir com você a possibilidade de o implantarmos em conjunto, pois queria estabelecer essa solução com a devida documentação para servir de base para um artigo (estou precisando pra faculdade.. hhehehehe). Como aqui deixamos de utilizar por diversas razões, estou em busca de um ambiente para implementação.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts