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

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

Jogando pesado na segurança de seu SSH

Mais sobre terminais leves....

O software livre na administração pública

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

Pequena solução para backup em redes mistas

Leitura recomendada

Esteganografia - Lendo o que os olhos não conseguem ler

O desafio continua...

Compilando e instalando o XFCE 4.2 no SuSE através dos fontes

Instalando o GNU/Linux numa máquina virtual (e aprendendo sem correr riscos)

Fazendo uma conexão bridge no VirtualBox

  
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