ASTNAGIOS 2.0 + FAN - Solução completa para monitoramento

gnu

Apresento minhas experiências com o FAN, assim como a segunda versão do script de integração Asterisk + Nagios, o qual já apresentei em artigo anterior.

[ Hits: 16.724 ]

Por: Sidney Alexandre Pagel em 06/04/2015


Mais fontes...



Conteúdo da aplicação "insert.php", executada no contexto Asterisk:

<?php
//variáveis de conexão
$servername = "192.168.X.X";
$username = "nagios";
$password = "XXXXX";
$dbname = "astnagios";
$id_contato = $argv[1];
//este parâmetro foi recebido na execução do PHP pelo contexto:
//exten => 3,2,System(/usr/bin/php /opt/php/servidores/insert.php ${id} ${id_evento})
//ela recebe portanto, o conteudo da variavel ${id}
$id_evento = $argv[2];
//esta variável recebe o conteúdo de ${id_evento}

//cria conexão
$conn = new mysqli($servername, $username, $password, $dbname);
//valida conexão
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

//variáveis insert
$horario = shell_exec("date +%H:%M:%S");
//cria sql de insert tabela eventos
$sql = "INSERT INTO checados ( id_evento, horario, contatosid_contato) VALUES ( '$id_evento','$horario','$id_contato')";
//valida insert
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close;

Essa aplicação, portanto, realiza a inserção do valor id_evento, horario, contatosid_contato na tabela chamada "checados". Como visto anteriormente, a inserção de dados nesta tabela acontece sempre que um evento novo ocorre. Para que a aplicação "astnagios.php" seja interrompida por atendimento, é necessário que o usuário tenha de fato teclado 3, e que não haja nenhum evento não tratado dentro da tabela "eventos". Todo evento dentro dessa tabela deve ter uma entrada correspondente dentro da tabela "checados" para que a aplicação seja interrompida.

A aplicação "hangup.php" tem o seguinte código:

<?php
//variáveis de conexão
$servername = "192.168.X.X";
$username = "nagios";
$password = "XXXXXX";
$dbname = "astnagios";

//cria conexão
$conn = new mysqli($servername, $username, $password, $dbname);
//valida conexao
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

//faz um select para saber qual é o último evento inserido na tabela checados
$sql = "SELECT max(id_checado) as maior FROM checados";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
        $maior =  $row["maior"];
}

$sql2 = "UPDATE checados set  hangup=1 where id_checado='$maior'";
//atualiza o valor do campo hangup com o valor "1". Esse é o campo pesquisado pela função
//de inserção de dados da aplicação astnagios. Quando a função retorna o valor 1, a //aplicação se interrompe. Isso é necessário para que a função só termine quando a ligação //realmente chegou a  um fim. Por isso essa aplicação (hangup.php) é executada apenas em //caso de sucesso completo da ligação.
if ($conn->query($sql2) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql2 . "
" . $conn->error; } //parâmetros de validação do insert na base de dados $conn->close;

Em todos os testes realizados, a aplicação se mostrou eficiente e não tivemos nenhuma falha detectada.

Agradecimentos

Para finalizar, gostaria de externar meus agradecimentos a todos que tornaram a solução possível:
  • Meu amigo Renato Estevam, pela impagável colaboração nas aplicações PHP e no banco de dados.
  • Meu amigo Roni, cujo comentário "tá tudo errado", fez com que melhorássemos a qualidade do trabalho.
  • Meu amigo Giovanni, que confiou no trabalho e no resultado.
  • Ao VOL, que me permite expor em um ambiente de grande visibilidade, minhas humildes contribuições.
  • A todos que lerem, comentarem, gostarem e mesmo não gostarem da solução.

Página anterior    

Páginas do artigo
   1. A descoberta
   2. Mãos à obra
   3. Cadastrando... cadastrando...
   4. Os serviços
   5. Passando tudo para o Nagios
   6. Os hosts críticos - Algo a mais
   7. A definição
   8. Fazendo acontecer
   9. A configuração dos hosts críticos
   10. O banco de dados e a aplicação
   11. Os fontes...
   12. O Asterisk
   13. Mais fontes...
Outros artigos deste autor

O software livre na administração pública

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

Jogando pesado na segurança de seu SSH

Mais sobre terminais leves....

Integrando Nagios com Asterisk

Leitura recomendada

GNU Emacs (Intro)

MP3 no Linux

Atualizando do Slackware 9 para 10.0

Clonar FreeBSD pela rede e sem downtime

Técnicas de memorização para facilitar o uso VI (Comandos básicos)

  
Comentários
[1] Comentário enviado por erisrjr em 06/04/2015 - 12:55h

Artigo com bastante informação, muito legal mesmo.
------------------------------------------------------
Keep it Simple, Stupid - UNIX Principle.

[2] Comentário enviado por danniel-lara em 07/04/2015 - 08:34h


Parabéns ótimo artigo

[3] Comentário enviado por Donizetti em 12/04/2015 - 13:01h

Isso sim é o tipo de informação que faz diferença.

[4] Comentário enviado por gnu em 13/04/2015 - 11:53h


Muito obrigado a todos.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts