Cómo enseñarle a Zabbix a enviar notificaciones de problemas directamente al escritorio


Imagen: fuente

Hola Habr! Mi nombre es Ilya Ableev, trabajo en el departamento de monitoreo de Badoo.

Puede esperar mucho tiempo sobre qué sistema de monitoreo está más fresco. La herramienta principal para responder a problemas en Badoo es Zabbix, y hemos compartido repetidamente la experiencia de personalizarlo.

Fuera de la caja, puede aprender sobre nuevos problemas a través de la interfaz web o por correo / SMS. Esto funciona bien, y hasta cierto punto nos sentimos cómodos con estos métodos.

Hoy, nuestro sistema tiene varias instancias de servidor, miles de hosts, cientos de miles de comprobaciones y aproximadamente la misma cantidad de disparadores a los que debe responder lo más rápido posible. Después de una serie de incidentes, cuando solo pasamos hasta diez minutos para detectar un problema (que es completamente inaceptable), nos dimos cuenta de que necesitábamos otras formas de informar problemas. Entonces, tal vez nuestra reacción sería más rápida.

La solución óptima, en nuestra opinión, sería mostrar notificaciones importantes en la parte superior de todas las ventanas (navegadores, chats, consolas). En este artículo, hablaremos sobre cómo terminamos Zabbix, enseñando cómo enviarlos directamente al escritorio.

Para quién esta solución es adecuada:

  • administradores de turno, que no solo miran el monitor las 24 horas, sino que también se ocupan de otras tareas;
  • todos los demás administradores a quienes no les gusta ver el PROBLEMA y las hojas de OK en el correo o SMS, pero que desean informarse sobre problemas críticos de manera oportuna.

Tendrá que pasar un tiempo en la instalación, pero creo que si usa Zabbix y ya ha usado scripts personalizados, no será difícil para usted.

Atencion Recibir notificaciones de esta manera es adictivo, su uso a largo plazo da la impresión de que es una parte integral de Zabbix.

Te diré en pasos qué y cómo lo hicimos. La implementación técnica es bastante simple:

  1. Zabbix envía una alerta a algún evento.
  2. El script de envío en el servidor envía datos al cliente en el escritorio a través de UDP.
  3. El script del destinatario recibe la notificación y desencadena la aparición de un mensaje emergente a través de una aplicación adicional.

El tercer elemento puede variar según el sistema operativo que esté utilizando y la aplicación que más le guste.

Paso uno: configurar Zabbix


La documentación oficial detalla cómo crear sus alertas .

El código del proyecto está disponible en GitHub: https://github.com/ableev/ZbxDsktp .

  1. Ponga zbxpush.py en AlertScriptsPath por adelantado en el servidor Zabbix.
  2. Más adelante en la interfaz web: AdministraciónTipos de mediosCrear .




3. Registraremos por adelantado el IP / FQDN al que enviaremos las alertas.

Este artículo puede ser actualizado
Por ejemplo, hemos hecho esto: hay un servidor de monitoreo principal, con un inicio de sesión SSH, el script recuerda la IP de la persona que llama y comienza a enviarle alertas. Por lo tanto, para activar la recepción de datos en el hogar, no necesita cambiar la acción cada vez.

En la interfaz web: AdministraciónUsuarios% username%Media .



4. Crear una acción en los disparadores.

En la interfaz web: ConfiguraciónAcciones .



Formato de envío


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

El primero es el formato de número del activador (4 o 5 afecta el icono que se muestra: Alto o Desastre), el segundo es el encabezado de la notificación, el tercero es el cuerpo del mensaje.

@@@ - para que sea conveniente dividir en columnas, porque los nombres de los desencadenantes pueden decir cualquier cosa (al menos con nosotros :)), pero ciertamente no esta combinación.





Paso dos: el servidor envía datos al cliente


La lógica es simple: recibimos un evento, lo reenviamos al cliente.

zbxpush.py

Aquí puede cambiar UDP a TCP. Elegimos UDP por una simple razón: Zabbix envía todas las notificaciones en secuencia, lo que significa que si su computadora no está disponible, en caso de usar TCP, las notificaciones se enviarán con un largo retraso.

Pero UDP no es confiable
El lector, que viene al chiste sobre UDP, notará que en el caso de enviar alertas a través de UDP, existe la posibilidad de perderlas en algún lugar entre el servidor y el escritorio. Y tendrá razón. Pero el punto no es entregar un mensaje garantizado, sino llamar la atención de manera simple y rápida sobre el tablero con problemas: "Oye, algo sucedió allí, ve a ver".

¡Recuerde hacer que el script sea ejecutable!

Paso tres: recibe el evento y muestra notificaciones


zbxlistenerd.py : un script que girará en segundo plano y disparará notificaciones

settings.cfg : archivo con la configuración del cliente

icons/5.png , icons/4.png : iconos para diferentes críticas de los desencadenantes
Además nuestros caminos divergen. La parte del "cliente" implica un poco de creatividad, ya que todos crean un ambiente para ellos mismos.

Lo que es necesario:

  • Iconos correspondientes a la criticidad de los desencadenantes;
  • notificaciones emergentes de sonido;
  • realizar una acción haciendo clic en una notificación (inicio de sesión SSH, abrir un enlace, iniciar un ticket sobre un problema, etc.).

Nuestra empresa utiliza principalmente Linux y Mac OS como SO de escritorio, así que veamos algunos ejemplos de ellos. Si implementa lo mismo para Windows, ¡bienvenido a comentar! Nos complace complementar el post.

Linux




Permíteme darte un ejemplo que usó: notificar-enviar en Xfce (en la captura de pantalla anterior). ¿Por qué notificar-enviar y no el mismo Python usando libnotify? Sí, porque está en todas las distribuciones de escritorio populares (Ubuntu, Fedora, SUSE) y funciona con todos los DE (al menos populares) (Gnome, KDE, Xfce).

Consejo: si experimenta períodos de indisponibilidad masiva de algo (por ejemplo, un interruptor se ha caído y está inundado de una gran cantidad de desencadenantes sobre la falta de disponibilidad del servidor), configure inmediatamente la tecla de acceso rápido para completar el proceso de notificación y envío.

Mac OS


Dado que inicialmente la solución se implementó sobre la base de una aplicación gratuita, y luego probamos la de pago, habrá dos ejemplos.

notificador de terminal




Después de una breve búsqueda, se eligió un terminal-notificador gratuito.

Pros:

  • Puede configurar diferentes iconos para diferentes criticidades;
  • Puede crear enlaces a gráficos en Zabbix y abrirlos haciendo clic en una notificación;
  • Puede implementar la apertura de enlaces SSH: vieron una notificación -> hicieron clic -> fueron inmediatamente al host.

Contras: ninguno (especialmente después de agregar el soporte de iconos).

Gruñir



Para habilitar, configure growl_enabled = True en settings.cfg.

En un momento en que el notificador de terminal no sabía cómo usar iconos personalizados, Growl se las arregló bastante bien. Por lo tanto, nuestra curiosidad derrotó a nuestra curiosidad, y probamos esta aplicación bastante popular (que, debo decir, no solo puede cambiar los íconos, es un centro de notificaciones completo).

Pros:

  • Es posible que ya tenga instalada la aplicación;
  • Puede elegir diferentes iconos para diferentes niveles de criticidad;
  • Al igual que en el terminal-notificador, puede configurar acciones haciendo clic en las notificaciones.

Menos: pagado.

Si no tiene Growl, aún así le recomiendo usar terminal-notifier.

Conclusión


Entonces, con la ayuda de dispositivos simples ...

Lo que obtuvimos como resultado:

  • entrega rápida de notificaciones a los administradores;
  • reducción del tiempo de reacción a los eventos (desde el momento en que "se enteraron" a "reparados" o "transmitidos");
  • la capacidad de realizar acciones semiautomáticas simples:

Además, todo depende de tu creatividad.

Érase una vez, cuando trabajaba en una empresa proveedora, cuando el canal de Internet se cayó de todos los altavoces y auriculares en el lugar de trabajo, se escuchó el sonido de una sirena. Esto llevó al asistente (yo) a un estupor, no dio un informe adecuado del problema por teléfono, pero él (I) trató de resolver este problema lo antes posible.

Personalmente, ya conozco casos de atornillar al guión el sonido de un cerdo de un antivirus popular y habladores de un traductor popular. :)

Si tienes tiempo libre, ganas y tecnología moderna, puedes hacerlo


¡Reacciones rápidas a incidentes!

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


All Articles