Zabbix + Voximplant: monitoramento com chamadas ou como parar de se preocupar e configurá-lo rapidamente

O Zabbix - inteligente, flexível e personalizável - pode fazer tudo. Ou quase tudo. Seria estranho se ele não pudesse fazer amizade com a telefonia na nuvem, especialmente quando esta tiver uma API HTTP conveniente - use sua saúde. Hoje vamos demonstrar como configurar o Zabbix para chamadas de notificação via Voximplant, o que pode ser muito útil em casos de emergência ("não há tempo para explicar, você precisa ligar - o servidor de batalha simplesmente caiu").

Baseado no quadro do filme "The Matrix" (The Matrix (1999), Warner Bros.)
Nota: o tutorial assume que você já possui um Zabbix funcional e configurou o front-end do Zabbix. A instalação inicial do Zabbix não é o objetivo deste artigo. Curiosos / com necessidade de um guia desse tipo, consulte a documentação oficial e / ou o google.

Com o que trabalharemos


Nosso exemplo usa o VDS com o CentOS 7, no qual o Zabbix 4.2.6 está instalado (a última versão estável no momento da redação). Vamos monitorar o mesmo servidor em que o Zabbix trabalha. O Voximplant precisa de uma conta na plataforma e um script de processamento de chamadas para JS. E agora um pouco mais.

O que faremos


Nenhuma ciência do foguete, vamos fazer um monitoramento muito simples que responda à aparência do arquivo / tmp / habrTriggerFile : quando esse arquivo aparecer, o Zabbix entrará em contato com o Voximplant por meio da API HTTP, um script funcionará que chamará o número de telefone especificado, diga "Atenção. Um arquivo foi criado no servidor. ” e desligue. Se você excluir / renomear o arquivo e depois devolvê-lo, haverá uma chamada novamente. Se você não fizer nada, haverá apenas uma chamada.

Voximplant


Faça login na sua conta (ou registre-se ) e crie o aplicativo habr . Dentro do aplicativo, vá para a guia Cenários e crie um script de notificação com este código:

VoxEngine.addEventListener(AppEvents.Started, () => { const call = VoxEngine.callPSTN(" ", "   ") call.addEventListener(CallEvents.PlaybackFinished, () => { VoxEngine.terminate() }) call.addEventListener(CallEvents.Connected, () => { setTimeout( () => call.say(".     .", Language.RU_RUSSIAN_FEMALE), 1000 ) }) }) 

Você pode executar este script com uma solicitação HTTP (e sem comprar um número de telefone). Não se esqueça de substituir os números de telefone no callPSTN : o primeiro é para quem a plataforma ligará, o segundo é o callerid, que será exibido no assinante chamado; pode ser o seu número pessoal que foi verificado na plataforma ou um número adquirido anteriormente na Voximplant (observe que os números virtuais não podem ser usados). O script chama o número, após a conexão relata que um arquivo foi criado e desliga.

Salve o script e vá para a guia Roteamento para criar uma regra:

Salve a regra e - observe - copie seu ID.


Em seguida, você precisará de chaves de API, leve-as na seção apropriada do menu principal.
Conhecendo as chaves da API e o ID da regra, você pode substituí-las no método StartScenarios da nossa API HTTP, será algo parecido com isto:

 https://api.voximplant.com/platform_api/StartScenarios/?account_id=1&api_key=4ed5695e-4690-448r-95e8-3f8f0001287c&rule_id=28 

Um pouco mais tarde, usamos essa solicitação ao configurar o monitoramento, que já pode ser iniciado.

Zabbix


Digite seu front end do Zabbix como seu usuário (ou administrador) e, na seção Configuração - Hosts, clique em Criar host. No nome, escreva localhost , em grupos especifique o grupo de teste e clique em Adicionar abaixo.


Agora, na lista de hosts, você verá o servidor Zabbix padrão e o host local. A partir daqui, continuaremos a configurar.

O monitoramento do Zabbix é baseado em uma cadeia de 3 entidades: Item - Trigger - Action. Todos os três links são obrigatórios, portanto, você precisa criar cada um deles em sequência.

Item


Item é um acumulador de dados e, sem dados, o monitoramento não reagirá a nada. Para criar um item, na lista de hosts, clique em Itens à direita do nome do host local. Você também pode clicar no nome do host e, na tela exibida, vá para a guia Itens - a essência é a mesma. Uma vez na guia Itens, clique em Criar item no canto superior direito. Digite o nome - item habr e clique em Adicionar ao lado do campo Chave - role para baixo, precisamos da chave padrão vfs.file.exists , selecione-a e ela será substituída no campo Chave. Substitua arquivo pelo caminho atual; no nosso caso, a chave será assim: vfs.file.exists [/ tmp / habrTriggerFile] . No campo Intervalo de atualização, defina 5s para que o monitoramento responda mais rapidamente quando criamos o arquivo no host. Na parte inferior da página, clique em Adicionar e veja imediatamente o novo item.



Gatilho


Os gatilhos avaliam os dados coletados e, quando atingem o limite especificado, eles reagem - eles iniciam a ação. Na tela com o item criado, vá para a guia Triggers:


Clique em Criar gatilho, nomeie-o como habr trigger . O valor para o campo Expressão é convenientemente coletado usando o construtor - o botão Adicionar. Defina as configurações como na captura de tela e clique em Inserir:


Clique em Adicionar na parte inferior da página - pronto, o gatilho é criado.

Acção


Ação é uma ação que dispara um gatilho acionado. Abra a guia Configuração - Ações, clique em Criar ação. O nome é subitamente - habr action . Abaixo, no bloco Nova condição, deixe tudo como padrão e adicione habr . Como resultado, o nome do acionador contém a condição de habr . Clique em Adicionar para adicionar uma condição - ela aparecerá imediatamente no bloco Condições, veja a captura de tela:


Aqui, vá para a guia Operações e, no bloco Operações, clique em Novo para adicionar uma ação. No tipo Operação, selecione Comando remoto, o bloco da lista Destino e o campo de entrada Comandos serão exibidos. No bloco da lista Destino, clique em Novo, você receberá o destino padrão - host atual, é necessário - clique em Adicionar e o destino aparecerá na lista. No campo de entrada, insira curl + uma solicitação gerada anteriormente ao Voximplant:

 curl "https://api.voximplant.com/platform_api/StartScenarios/?account_id=1&api_key=4ed5695e-4690-448r-95e8-3f8f0001287c&rule_id=28" 

Em seguida, adicione esta ação (Adicionar como um link) e somente clique no botão Adicionar para concluir a criação da ação.


Um ponto importante: escolhemos o tipo de ação do comando Remoto, que é desativada por padrão na configuração do agente Zabbix. Para corrigir isso, no host, abra a configuração e coloque o valor 1 para EnableRemoteCommands:

 vi /etc/zabbix/zabbix_agentd.conf // EnableRemoteCommands = 1 

Depois disso, reinicie o serviço do agente:

 service zabbix-agent restart 


Iniciamos a cadeia de ações


No painel Zabbix, vá para a seção Monitoramento - Problemas. Em breve, veremos um aviso aqui de que o gatilho funcionou.

No host, crie um arquivo:

 touch /tmp/habrTriggerFile 

Após 5 segundos no painel Problemas, veremos uma nova mensagem; PROBLEMA piscará na coluna Status e, se você clicar no ícone na coluna Ações, verá os detalhes da ação (a captura de tela é clicável):



Ao longo do caminho, será feita uma chamada para o número de telefone que especificamos no script Voximplant.

Baseado no quadro do filme "The Matrix" (The Matrix (1999), Warner Bros.)

Se você renomear o arquivo,

 mv /tmp/habrTriggerFile /tmp/habrTriggerFile_ 

depois de 5 segundos, o status do problema será RESOLVIDO.

Feito! Você é ótimo porque configura a cadeia de interação host - Zabbix - Voximplant e, pelo mesmo princípio, pode configurar lógica arbitrariamente complexa para chamadas de notificação.

Source: https://habr.com/ru/post/pt465491/


All Articles