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.