4 Webhook

Descripción general

El tipo de medio webhook es útil para realizar llamadas HTTP utilizando código JavaScript personalizado para una integración sencilla con software externo como sistemas de helpdesk, chats o mensajería. Puede optar por importar una integración proporcionada por Zabbix o crear una integración personalizada desde cero.

Integraciones

Las siguientes integraciones están disponibles y permiten usar tipos de medio webhook predefinidos para enviar notificaciones de Zabbix a:

Además de los servicios enumerados aquí, Zabbix puede integrarse con Spiceworks (no se requiere webhook). Para convertir las notificaciones de Zabbix en tickets de Spiceworks, cree un tipo de medio de correo electrónico e introduzca la dirección de correo electrónico del servicio de asistencia de Spiceworks (por ejemplo, help\@zabbix.on.spiceworks.com) en la configuración de perfil de un usuario de Zabbix designado.

Configuración

Para empezar a usar una integración de webhook:

  1. Localice el archivo .yaml requerido en el directorio templates/media de la versión descargada de Zabbix o descárguelo desde el repositorio git de Zabbix.
  2. Importe el archivo en su instalación de Zabbix. El webhook aparecerá en la lista de tipos de medios.
  3. Configure el webhook según las instrucciones del archivo Readme.md (puede hacer clic en el nombre de un webhook arriba para acceder rápidamente a Readme.md).

Para crear un webhook personalizado desde cero:

  1. Vaya a Alerts > Media types.
  2. Haga clic en Create media type.

La pestaña Media type contiene varios atributos específicos para este tipo de medio:

Todos los campos de entrada obligatorios están marcados con un asterisco rojo.

Los siguientes parámetros son específicos para el tipo de medio webhook:

Parameter Description
Parameters Especifique las variables del webhook como pares de atributo y valor.
Para los webhooks preconfigurados, la lista de parámetros varía según el servicio. Consulte el archivo Readme.md del webhook para obtener la descripción de los parámetros.
Para los webhooks nuevos, se incluyen de forma predeterminada varias variables comunes (URL:<empty>, HTTPProxy:<empty>, To:{ALERT.SENDTO}, Subject:{ALERT.SUBJECT}, Message:{ALERT.MESSAGE}); puede conservarlas o eliminarlas.

Los parámetros de webhook admiten macros de usuario, todas las macros compatibles con las notificaciones de problemas y, además, las macros {ALERT.SENDTO}, {ALERT.SUBJECT} y {ALERT.MESSAGE}.

Si especifica un proxy HTTP, el campo admite la misma funcionalidad que el campo HTTP proxy en la configuración del item. La cadena del proxy puede ir precedida por [scheme]:// para especificar qué tipo de proxy se usa (por ejemplo, https, socks4, socks5; consulte la documentación).
Script Introduzca código JavaScript en el editor modal que se abre al hacer clic en el campo del parámetro o en el icono de lápiz junto a él. Este código realizará la operación del webhook.
El script es un código de función que acepta pares parámetro-valor. Los valores deben convertirse en objetos JSON mediante el método JSON.parse(), por ejemplo: var params = JSON.parse(value);.

El código tiene acceso a todos los parámetros, puede realizar solicitudes HTTP GET, POST, PUT y DELETE, admitir métodos adicionales como CONNECT, PATCH, HEAD, OPTIONS y TRACE, y controlar las cabeceras HTTP y el cuerpo de la solicitud.
El script debe contener un operador return; de lo contrario, no será válido. Puede devolver un estado OK junto con una lista opcional de etiquetas y valores de etiquetas (consulte la opción Process tags) o una cadena de error.

Tenga en cuenta que el script se ejecuta solo después de crear una alerta. Si el script está configurado para devolver y procesar etiquetas, estas etiquetas no se resolverán en las macros {EVENT.TAGS} y {EVENT.RECOVERY.TAGS} del mensaje inicial del problema ni en los mensajes de recuperación, porque el script aún no habrá tenido tiempo de ejecutarse.
Nota: Se recomienda usar variables locales (por ejemplo, var local = 1) en lugar de una global (por ejemplo, global = 1) para garantizar que cada script opere sobre sus propios datos y evitar colisiones entre llamadas simultáneas (consulte los problemas conocidos).

Véase también: Webhook development guidelines, Webhook script examples, Additional JavaScript objects.
Timeout Tiempo de espera de ejecución de JavaScript (1-60s, predeterminado 30s).
Se admiten sufijos de tiempo, por ejemplo, 30s, 1m.
Process tags Marque la casilla para procesar los valores de las propiedades JSON devueltas como etiquetas. Estas etiquetas se añaden a cualquier etiqueta de problema existente.
Tenga en cuenta que al usar webhook tags, el webhook debe devolver un objeto JSON que contenga al menos un objeto tags vacío: var result = {tags: {}};
Ejemplos de etiquetas que pueden devolverse: jira-id:prod-1234, responsible:John Smith, processed:<no value>
Include event menu entry Marque la casilla para incluir una entrada en el menú de eventos que enlace a un ticket externo creado.
Se incluirá una entrada para cada webhook que esté habilitado y tenga marcada esta casilla. Tenga en cuenta que si los parámetros Menu entry name y Menu entry URL contienen macros {EVENT.TAGS.<tag name>}, solo se incluirá una entrada si estas macros pueden resolverse (es decir, si el evento tiene estas etiquetas definidas).
Si está marcada, el webhook no debe usarse para enviar notificaciones a distintos usuarios (considere crear en su lugar un usuario dedicado) y no debe usarse en múltiples acciones de alerta para un único evento de problema.
Menu entry name Especifique el nombre de la entrada del menú.
Se admite la macro {EVENT.TAGS.<tag name>}.
Este campo solo es obligatorio si Include event menu entry está marcado.
Menu entry URL Especifique la URL subyacente de la entrada del menú.
Se admite la macro {EVENT.TAGS.<tag name>}.
Este campo solo es obligatorio si Include event menu entry está marcado.

Consulte los parámetros comunes de tipos de medio para obtener detalles sobre cómo configurar los mensajes predeterminados y las opciones de procesamiento de alertas.

Aunque un webhook no use mensajes predeterminados, las plantillas de mensaje para los tipos de operación usados por este webhook deben seguir definiéndose.

Prueba

Para probar un tipo de medio webhook configurado:

  1. Localice el webhook correspondiente en la lista de tipos de medio.
  2. Haga clic en Test en la última columna de la lista (se abrirá una ventana de prueba).
  3. Edite los valores de los parámetros del webhook según sea necesario. Reemplace las macros con valores de ejemplo; de lo contrario, las macros no se resolverán y la prueba fallará.
  4. Haga clic en Test.

Reemplazar o eliminar valores en la ventana de prueba solo afecta al procedimiento de prueba; los valores reales de los atributos del webhook permanecerán sin cambios.

Para ver las entradas del registro de prueba del tipo de medio sin salir de la ventana de prueba, haga clic en Open log (se abrirá una nueva ventana emergente).

Si la prueba del webhook es exitosa:

  • Se muestra el mensaje "Prueba de tipo de medio exitosa.".
  • La respuesta del servidor aparece en el campo gris Respuesta.
  • El tipo de respuesta (JSON o Cadena) se especifica debajo del campo Respuesta.

Si la prueba del webhook falla:

  • Se muestra el mensaje "La prueba del tipo de medio falló.", seguido de detalles adicionales sobre el fallo.

Medios de usuario

Una vez configurado el tipo de medio, vaya a la sección Usuarios > Usuarios y asigne el medio webhook a un usuario existente o cree un nuevo usuario para representar el webhook. Los pasos para configurar medios de usuario para un usuario existente, al ser comunes para todos los tipos de medios, se describen en la página Tipos de medios.

Si un webhook utiliza etiquetas para almacenar el ID del ticket\mensaje, evite asignar el mismo webhook como medio a distintos usuarios, ya que hacerlo puede provocar errores de webhook (esto se aplica a la mayoría de los webhooks que utilizan la opción Include event menu entry). En este caso, la práctica recomendada es crear un usuario dedicado para representar el webhook:

  1. Después de configurar el tipo de medio webhook, vaya a la sección Usuarios > Usuarios y cree un usuario de Zabbix dedicado para representar el webhook; por ejemplo, con el nombre de usuario Slack para el webhook de Slack. Todos los ajustes, excepto los medios, pueden dejarse con sus valores predeterminados, ya que este usuario no iniciará sesión en Zabbix.
  2. En el perfil del usuario, vaya a la pestaña Media y añada un webhook con la información de contacto requerida. Si el webhook no utiliza un campo Send to, introduzca cualquier combinación de caracteres admitidos para omitir los requisitos de validación.
  3. Conceda a este usuario al menos permisos de lectura sobre todos los hosts para los que deba enviar alertas permissions.

Al configurar la acción de alerta, añada este usuario en el campo Send to users en los detalles de la operación; esto indicará a Zabbix que utilice el webhook para las notificaciones de esta acción.

Configuración de acciones de alerta

Las acciones determinan qué notificaciones deben enviarse a través del webhook. Los pasos para configurar acciones que involucren webhooks son los mismos que para todos los demás tipos de medios, con estas excepciones:

  • Si un webhook utiliza etiquetas de webhook para almacenar el ID de ticket\mensaje y gestionar operaciones de actualización\resolución, evite usar el mismo webhook en múltiples acciones de alerta para un solo evento de problema. Si {EVENT.TAGS.<nombre de etiqueta>} existe y se actualiza en el webhook, su valor resultante será indefinido. Para evitar esto, utilice un nuevo nombre de etiqueta en el webhook para almacenar los valores actualizados. Esto se aplica a los webhooks de Jira, Jira Service Desk, Mattermost, Opsgenie, OTRS, Redmine, ServiceNow, Slack, Zammad y Zendesk proporcionados por Zabbix y a la mayoría de los webhooks que utilizan la opción Incluir entrada de menú de evento. Sin embargo, tenga en cuenta que un solo webhook puede usarse en múltiples operaciones o pasos de escalamiento de la misma acción, así como en diferentes acciones que no se activarán por el mismo evento de problema debido a diferentes condiciones.
  • Al usar un webhook en acciones para eventos internos, asegúrese de marcar la casilla Mensaje personalizado y definir un mensaje personalizado en la configuración de la operación de la acción. De lo contrario, no se enviará una notificación.