Como ensinar o Zabbix a enviar notificações de problemas diretamente para a área de trabalho


Imagem: fonte

Olá Habr! Meu nome é Ilya Ableev, trabalho no departamento de monitoramento do Badoo.

Você pode esperar por um longo tempo sobre qual sistema de monitoramento é mais frio. A principal ferramenta para responder a problemas no Badoo é o Zabbix, e compartilhamos repetidamente a experiência de personalizá-lo.

Pronto para uso, você pode aprender sobre novos problemas por meio da interface da web ou por email / SMS. Isso funciona bem e, até certo ponto, estávamos à vontade com esses métodos.

Hoje, nosso sistema possui várias instâncias de servidor, milhares de hosts, centenas de milhares de verificações e aproximadamente o mesmo número de gatilhos aos quais você precisa responder o mais rápido possível. Após uma série de incidentes, quando gastamos apenas dez minutos para detectar um problema (o que é completamente inaceitável), percebemos que precisávamos de outras maneiras de relatar problemas. Então talvez nossa reação fosse mais rápida.

A solução ideal, em nossa opinião, seria exibir notificações importantes sobre todas as janelas (navegadores, chats, consoles). Neste artigo, falaremos sobre como terminamos o Zabbix, ensinando como enviá-los diretamente para a área de trabalho.

Para quem esta solução é adequada:

  • administradores de serviço, que não apenas olham o monitor 24 horas por dia, mas também lidam com outras tarefas;
  • todos os outros administradores que não gostam de visualizar as folhas PROBLEM e OK no correio ou SMS, mas que desejam descobrir problemas críticos em tempo hábil.

Você terá que gastar tempo na instalação, mas acho que se você usar o Zabbix e já tiver usado scripts personalizados, não será difícil para você.

Atenção! Receber notificações dessa maneira é viciante, seu uso a longo prazo dá a impressão de que é parte integrante do Zabbix.

Vou contar em etapas o que e como fizemos. A implementação técnica é bastante simples:

  1. O Zabbix envia um alerta para algum evento.
  2. O script de envio no servidor envia dados para o cliente na área de trabalho via UDP.
  3. O script do destinatário recebe a notificação e aciona a aparência de uma mensagem pop-up por meio de um aplicativo adicional.

O terceiro item pode diferir dependendo do sistema operacional que você está usando e do aplicativo que você mais gosta.

Etapa 1: Configurar o Zabbix


A documentação oficial detalha como criar seus alertas .

O código do projeto está disponível no GitHub: https://github.com/ableev/ZbxDsktp .

  1. Coloque o zbxpush.py no AlertScriptsPath com antecedência no servidor Zabbix.
  2. Mais adiante na interface da web: AdministraçãoTipos de mídiaCriar .




3. Registraremos antecipadamente o IP / FQDN para o qual enviaremos alertas.

Este item pode ser atualizado
Por exemplo, fizemos o seguinte: existe um servidor de monitoramento principal, com um login SSH, o script lembra o IP do chamador e começa a enviar alertas para ele. Portanto, para ativar o recebimento de dados em casa, você não precisa alterar a ação todas as vezes.

Na interface da web: AdministraçãoUsuários% username%Mídia .



4. Crie uma ação nos gatilhos.

Na interface da web: ConfiguraçãoAções .



Formato de envio


{TRIGGER.NSEVERITY}@@@{HOST.NAME}@@@{TRIGGER.NAME}

O primeiro é o formato numérico do acionador (4 ou 5 afeta o ícone exibido: Alto ou Desastre), o segundo é o cabeçalho da notificação e o terceiro é o corpo da mensagem.

@@@ - para facilitar a divisão em colunas, porque os nomes dos gatilhos podem dizer qualquer coisa (pelo menos conosco :)), mas certamente não essa combinação.





Etapa 2: o servidor envia dados para o cliente


A lógica é simples: recebemos um evento, encaminhamos para o cliente.

zbxpush.py

Aqui você pode alterar UDP para TCP. Escolhemos o UDP por um motivo simples: o Zabbix envia todas as notificações em sequência, o que significa que, se o seu computador não estiver disponível, no caso de usar o TCP, as notificações serão enviadas com um longo atraso.

Mas o UDP não é confiável
O leitor, que faz piada sobre o UDP, notará que, no caso de enviar alertas pelo UDP, há uma chance de perdê-los em algum lugar entre o servidor e a área de trabalho. E ele estará certo. Mas o objetivo não é entregar uma mensagem garantida, mas chamar a atenção de forma simples e rápida para o painel com problemas: "Ei, algo aconteceu lá, vá ver".

Lembre-se de tornar o script executável!

Etapa 3: receber o evento e exibir notificações


zbxlistenerd.py - um script que girará em segundo plano e acionará notificações

settings.cfg - arquivo com configurações do cliente

icons/5.png , icons/4.png - ícones para diferentes críticas de gatilhos
Além disso, nossos caminhos divergem. A parte "cliente" envolve um pouco de criatividade, pois todos criam um ambiente para si mesmos.

O que é necessário:

  • Ícones correspondentes à criticidade dos gatilhos;
  • notificações pop-up sonoras;
  • executando uma ação clicando em uma notificação (login SSH, abrindo um link, iniciando um ticket sobre um problema etc.).

Nossa empresa usa principalmente Linux e Mac OS como um sistema operacional de desktop, então vamos dar alguns exemplos para eles. Se você implementar o mesmo para o Windows, faça o comentário! Estamos felizes em complementar o post.

Linux




Deixe-me dar um exemplo que você usou: notificar-enviar no Xfce (na captura de tela acima). Por que notificar-enviar e não o mesmo Python usando libnotify? Sim, porque está em todas as distribuições populares de desktop (Ubuntu, Fedora, SUSE) e funciona com todos (pelo menos populares) DEs (Gnome, KDE, Xfce).

Dica: se você experimentar períodos de indisponibilidade em massa de algo (por exemplo, um comutador caiu e você é inundado por uma montanha de gatilhos sobre a indisponibilidade do servidor), configure imediatamente a tecla de atalho para concluir o processo de notificação-envio.

Mac OS


Como inicialmente a solução foi implementada com base em um aplicativo gratuito e, em seguida, experimentamos o pago, haverá dois exemplos.

notificador de terminal




Após uma breve pesquisa, foi escolhido um notificador de terminal gratuito.

Prós:

  • Você pode definir ícones diferentes para diferentes aspectos críticos;
  • Você pode criar links para gráficos no Zabbix e abri-los clicando em uma notificação;
  • Você pode implementar a abertura dos links SSH: eles viram uma notificação -> clicaram -> imediatamente foram para o host.

Contras: nenhum (especialmente depois que o suporte ao ícone foi adicionado).

Growl



Para ativar, defina growl_enabled = True em settings.cfg.

Numa época em que o notificador de terminal não sabia como usar ícones personalizados, Growl lidou muito bem com isso. Portanto, nossa curiosidade prevaleceu sobre a nossa curiosidade - e testamos esse aplicativo bastante popular (que, devo dizer, não pode apenas mudar de ícone - é todo um centro de notificações).

Prós:

  • você já pode ter o aplicativo instalado;
  • Você pode escolher ícones diferentes para diferentes criticidade;
  • Assim como no notificador de terminal, você pode configurar ações clicando em notificações.

Menos: pago.

Se você não tem Growl, ainda recomendo usar o notificador de terminal.

Conclusão


Então, com a ajuda de dispositivos simples ...

O que obtivemos como resultado:

  • entrega rápida de notificações aos administradores;
  • redução do tempo de reação a eventos (do momento em que “descobriram” a “repararam” ou “repassaram”);
  • a capacidade de executar ações semi-automáticas simples:

Além disso, tudo depende da sua criatividade.

Era uma vez, quando eu trabalhava em uma empresa prestadora, quando o canal da Internet caía de todos os alto-falantes e fones de ouvido no local de trabalho, o som de uma sirene era ouvido. Isso levou o atendente (eu) a ficar estupor, não deu um relatório adequado do problema por telefone, mas ele (I) tentou resolver o problema o mais rápido possível.

Pessoalmente, eu já conheço casos de estragar o script com o som de um porco de um antivírus popular e de um tradutor popular. :)

Se você tiver tempo livre, desejo e tecnologia moderna, poderá fazê-lo


Reações rápidas a incidentes!

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


All Articles