La correlación de eventos basada en disparadores permite correlacionar problemas separados reportados por un disparador.
Si bien generalmente un evento OK puede cerrar todos los eventos de problema creados por un disparador, hay casos en los que se necesita un enfoque más detallado. Por ejemplo, al monitorizar archivos de registro, es posible que desee descubrir ciertos problemas en un archivo de registro y cerrarlos individualmente en lugar de todos juntos.
Este es el caso de los disparadores que tienen el parámetro Modo de generación de eventos PROBLEM establecido en Múltiple. Dichos disparadores se utilizan normalmente para la monitorización de registros, procesamiento de traps, etc.
Es posible en Zabbix relacionar eventos de problema basados en etiquetado. Las etiquetas se utilizan para extraer valores y crear una identificación para los eventos de problema. Aprovechando esto, los problemas también pueden cerrarse individualmente en función de la coincidencia de la etiqueta.
En otras palabras, el mismo disparador puede crear eventos separados identificados por la etiqueta del evento. Por lo tanto, los eventos de problema pueden identificarse uno por uno y cerrarse por separado en función de la identificación por la etiqueta del evento.
En la monitorización de logs puede encontrar líneas similares a estas:
Línea1: Servicio 1 detenido
Línea2: Servicio 2 detenido
Línea3: Servicio 1 reiniciado
Línea4: Servicio 2 reiniciado
La idea de la correlación de eventos es poder emparejar el evento de problema de la Línea1 con la resolución de la Línea3 y el evento de problema de la Línea2 con la resolución de la Línea4, y cerrar estos problemas uno por uno:
Línea1: Servicio 1 detenido
Línea3: Servicio 1 reiniciado #problema de la Línea 1 cerrado
Línea2: Servicio 2 detenido
Línea4: Servicio 2 reiniciado #problema de la Línea 2 cerrado
Para hacer esto, necesita etiquetar estos eventos relacionados como, por ejemplo, "Servicio 1" y "Servicio 2". Esto se puede hacer aplicando una expresión regular a la línea del log para extraer el valor de la etiqueta. Luego, cuando se crean los eventos, se etiquetan como "Servicio 1" y "Servicio 2" respectivamente y el problema puede emparejarse con la resolución.
Para empezar, puede que desee configurar una métrica que monitorice un archivo de registro, por ejemplo:
Con la métrica configurada, espere un minuto para que se apliquen los cambios de configuración y luego vaya a Datos más recientes para asegurarse de que la métrica ha comenzado a recopilar datos.
Con la métrica funcionando, necesitas configurar el disparo. Es importante decidir a qué entradas del archivo de registro vale la pena prestar atención. Por ejemplo, la siguiente expresión de disparo buscará una cadena como 'Stopping' para señalar posibles problemas:
Para asegurarte de que cada línea que contenga la cadena "Stopping" se considere un problema, también debes establecer el Modo de generación de eventos de problema en la configuración del disparo en 'Múltiples'.
Luego define una expresión de recuperación. La siguiente expresión de recuperación resolverá todos los problemas si se encuentra una línea de registro que contenga la cadena "Starting":
Dado que no queremos eso, es importante asegurarse de alguna manera de que los problemas raíz correspondientes se cierren, no solo todos los problemas. Ahí es donde el etiquetado puede ayudar.
Los problemas y las resoluciones pueden coincidir especificando una etiqueta en la configuración del disparo. Deben realizarse las siguientes configuraciones:
Si se configura correctamente, podrás ver eventos de problema etiquetados por aplicación y emparejados con su resolución en Supervisión → Problemas.
Debido a que es posible una mala configuración, cuando se pueden crear etiquetas de eventos similares para problemas no relacionados, ¡revisa los casos que se describen a continuación!
Las macros indexadas siempre se refieren al campo Expresión de la configuración del disparo, no a la Expresión de recuperación. Por ejemplo, en un evento de recuperación, {ITEM.VALUE1} se resolverá al valor más reciente de la primera métrica en la expresión de problema en el momento de la recuperación. Si la expresión de recuperación se basa en una métrica diferente y el valor de la métrica de la expresión de problema cambia en el momento de la recuperación, los eventos obtendrán diferentes etiquetas y no se correlacionarán.
Con dos aplicaciones escribiendo mensajes de error y recuperación en el mismo archivo de registro, un usuario puede decidir usar dos etiquetas servicio en el mismo disparo con diferentes valores de etiqueta utilizando expresiones regulares separadas en los valores de las etiquetas para extraer los nombres de, por ejemplo, servicio A y servicio B de la macro {ITEM.VALUE} (por ejemplo, cuando los formatos de los mensajes difieren). Sin embargo, esto puede no funcionar como se planeó si no hay coincidencia con las expresiones regulares. Las expresiones regulares sin coincidencia producirán valores de etiqueta vacíos y un solo valor de etiqueta vacío en ambos eventos de problema y OK es suficiente para correlacionarlos. Por lo tanto, un mensaje de recuperación del servicio A puede cerrar accidentalmente un mensaje de error del servicio B.
Las etiquetas y valores de etiquetas reales solo se hacen visibles cuando se dispara un disparo. Si la expresión regular utilizada es inválida, se reemplaza silenciosamente por una cadena *UNKNOWN*. Si se omite el evento de problema inicial con un valor de etiqueta *UNKNOWN*, pueden aparecer eventos OK posteriores con el mismo valor de etiqueta *UNKNOWN* que pueden cerrar eventos de problema que no deberían haberse cerrado.
Si un usuario utiliza la macro {ITEM.VALUE} sin funciones de macro como valor de la etiqueta, se aplica la limitación de 255 caracteres. Cuando los mensajes de registro son largos y los primeros 255 caracteres no son específicos, esto también puede resultar en etiquetas de eventos similares para problemas no relacionados.