Zabbix + Voximplant: monitoreo con llamadas, o cómo dejar de preocuparse y configurarlo rápidamente

Zabbix, inteligente, flexible y personalizable, puede hacer todo. O casi todo. Sería extraño que no pudiera hacerse amigo de la telefonía en la nube, especialmente cuando este último tiene una API HTTP conveniente: use su salud. Hoy demostraremos cómo configurar Zabbix para llamadas de notificación a través de Voximplant, lo que puede ser muy útil en un caso de emergencia ("no hay tiempo para explicarlo, debe llamar, el servidor de batalla se cayó").

Basado en el cuadro de la película "The Matrix" (The Matrix (1999), Warner Bros.)
Nota: el tutorial asume que ya tiene un Zabbix funcionando y una interfaz de Zabbix configurada. La instalación inicial de Zabbix no es el propósito de este artículo, los curiosos / necesitados de dicha guía pueden consultar la documentación oficial y / o google.

Con qué trabajaremos


Nuestro ejemplo utiliza VDS con CentOS 7, en el que está instalado Zabbix 4.2.6 (la última versión estable en el momento de la escritura). Monitorearemos el mismo servidor donde trabaja Zabbix. Voximplant necesita una cuenta en la plataforma y un script de procesamiento de llamadas para JS. Y ahora un poco más.

Que haremos


Sin ciencia de cohetes, hagamos un monitoreo muy simple que responda a la aparición del archivo / tmp / habrTriggerFile : cuando aparezca dicho archivo, Zabbix se comunicará con Voximplant a través de la API HTTP, un script funcionará y llamará al número de teléfono especificado, diga "Atención". Se creó un archivo en el servidor ". y colgar Si elimina / cambia el nombre del archivo y luego lo devuelve, se volverá a llamar. Si no hace nada, solo habrá una llamada.

Voximplant


Inicie sesión en su cuenta (o regístrese ) y cree la aplicación habr . Dentro de la aplicación, vaya a la pestaña Escenarios y cree un script de notificación con 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 ) }) }) 

Puede ejecutar este script con una solicitud HTTP (y hacerlo sin comprar un número de teléfono). No olvide sustituir los números de teléfono en callPSTN : el primero es a quién llamará la plataforma, el segundo es callerid, que se mostrará en el suscriptor llamado; puede ser su número personal verificado en la plataforma o un número comprado previamente en Voximplant (tenga en cuenta que no se pueden usar números virtuales). El script llama al número, después de la conexión informa que se ha creado un archivo y cuelga.

Guarde el script y vaya a la pestaña Enrutamiento para crear una regla:

Guarde la regla y, tenga en cuenta, copie su ID.


A continuación, necesitará claves de API, tómelas en la sección correspondiente del menú principal.
Conociendo las claves API y la ID de la regla, puede sustituirlas por el método StartScenarios de nuestra API HTTP, se verá más o menos así:

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

Un poco más tarde, usamos esta solicitud al configurar la supervisión, que ya se puede iniciar.

Zabbix


Ingrese su interfaz de Zabbix como su usuario (o administrador), luego en la sección Configuración - Hosts, haga clic en Crear host. En el nombre, escriba localhost , en grupos, especifique el grupo de prueba y haga clic en Agregar a continuación.


Ahora en la lista de hosts verá tanto el servidor Zabbix predeterminado como el localhost. Desde aquí continuaremos configurando.

La supervisión de Zabbix se basa en una cadena de 3 entidades: Elemento - Activador - Acción. Los tres enlaces son obligatorios, por lo que debe crear cada uno de ellos en secuencia.

Artículo


El artículo es un acumulador de datos, y sin datos, el monitoreo no reaccionará ante nada. Para crear un elemento, en la lista de hosts, haga clic en Elementos a la derecha del nombre del host local. También puede hacer clic en el nombre del host y, en la pantalla que se abre, ir a la pestaña Elementos: la esencia es la misma. Una vez en la pestaña Elementos, haga clic en Crear elemento en la esquina superior derecha. Ingrese el nombre - elemento habr , luego haga clic en Agregar al lado del campo Clave - desplácese hacia abajo, necesitamos la clave estándar vfs.file.exists , selecciónela y se sustituirá en el campo Clave. Reemplace el archivo con la ruta actual, en nuestro caso la clave será así: vfs.file.exists [/ tmp / habrTriggerFile] . En el campo Intervalo de actualización, configure 5 segundos para que la supervisión responda más rápido cuando creamos el archivo en el host. En la parte inferior de la página, haga clic en Agregar e inmediatamente verá el nuevo elemento.



Disparador


Los desencadenantes evalúan los datos recopilados y cuando alcanzan el umbral especificado, reaccionan: comienzan la acción. En la pantalla con el elemento creado, vaya a la pestaña Disparadores:


Haga clic en Crear disparador, asígnele el nombre de disparador . El valor del campo Expresión se recopila convenientemente utilizando el constructor: el botón Agregar. Establezca la configuración como en la captura de pantalla y haga clic en Insertar:


Haga clic en Agregar en la parte inferior de la página: listo, se crea el activador.

Acción


La acción es una acción que dispara un disparador disparado. Abra la pestaña Configuración - Acciones, haga clic en Crear acción. El nombre es de repente - habr acción . A continuación, en el bloque Condición nueva, deje todo como predeterminado y agregue habr , como resultado, se obtiene el nombre del activador que contiene la condición habr . Haga clic en Agregar para agregar una condición: aparecerá inmediatamente en el bloque Condiciones, vea la captura de pantalla:


Aquí, vaya a la pestaña Operaciones, luego en el bloque Operaciones, haga clic en Nuevo para agregar una acción. En el Tipo de operación, seleccione Comando remoto, aparecerá el bloque de lista Destino y el campo de entrada Comandos. En el bloque de lista Destino, haga clic en Nuevo, se le ofrecerá el objetivo predeterminado: host actual, lo necesita, haga clic en Agregar y el objetivo aparecerá en la lista. En el campo de entrada, inserte curl + una solicitud generada previamente a Voximplant:

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

Luego agregue esta acción (Agregar como enlace), y solo luego haga clic en el botón Agregar para completar la creación de la Acción.


Un punto importante: elegimos el tipo de acción de comando Remoto, que está desactivado por defecto en la configuración del agente Zabbix. Para solucionar esto, en el host, abra la configuración y ponga un valor de 1 para EnableRemoteCommands:

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

Después de eso, reinicie el servicio del agente:

 service zabbix-agent restart 


Iniciamos la cadena de acciones.


En el panel de Zabbix, vaya a la sección Monitoreo - Problemas. Pronto veremos una advertencia aquí de que el gatillo funcionó.

En el host, cree un archivo:

 touch /tmp/habrTriggerFile 

Después de 5 segundos en el panel Problemas veremos un nuevo mensaje; PROBLEMA parpadeará en la columna Estado, y si hace clic en el icono en la columna Acciones, verá los detalles de la acción (se puede hacer clic en la captura de pantalla):



En el camino, se realizará una llamada al número de teléfono que especificamos en el script Voximplant.

Basado en el cuadro de la película "The Matrix" (The Matrix (1999), Warner Bros.)

Si cambia el nombre del archivo,

 mv /tmp/habrTriggerFile /tmp/habrTriggerFile_ 

luego, después de 5 segundos, el estado del problema se RESUELVE.

Hecho Usted es excelente porque ha configurado la cadena de interacción host - Zabbix - Voximplant y, por el mismo principio, puede configurar una lógica compleja arbitraria para las llamadas de notificación.

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


All Articles