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: 22.293 ]

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

Pequena solução para backup em redes mistas

Mais sobre terminais leves....

Jogando pesado na segurança de seu SSH

Integrando Nagios com Asterisk

NagVis - Gestor de mapas pra lá de especial

Leitura recomendada

Ripando CDs de audio no Debian e derivados

Personalizando o Ubuntu 9.04 com Screenlets

Monitorando a temperatura do computador com lm_sensors + MRTG

Instalar o TeamViewer no Ubuntu/Debian

Por que Gentoo é diferente?

  
Comentários
[1] Comentário enviado por removido 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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts