2 Detalles de preprocesamiento

Descripción general

Esta sección proporciona detalles del preprocesamiento del valor de la métrica. El preprocesamiento del valor de la métrica permite definir y ejecutar reglas de transformación para los valores de las métricas recibidos.

El preprocesamiento lo gestiona el proceso del administrador de preprocesamiento, incorporado en Zabbix 3.4, junto con los trabajadores de preprocesamiento que realizan los pasos de preprocesamiento. Todos los valores (con o sin preprocesamiento) de diferentes recolectores de datos pasan por el administrador de preprocesamiento antes de ser agregados a la caché del historial. Se utiliza comunicación IPC basada en sockets entre los recolectores de datos (sondeadores, capturadores, etc.) y el proceso de preprocesamiento. Tanto el servidor Zabbix como el proxy Zabbix (para elementos monitoreados por el proxy) realizan los pasos de preprocesamiento.

Procesamiento del valor de la métrica

Para visualizar el flujo de datos desde la fuente de datos a la base de datos Zabbix, Podemos utilizar el siguiente diagrama simplificado:

El diagrama anterior muestra solo procesos, objetos y acciones relacionados con el procesamiento del valor de la métrica en forma simplificada. El diagrama no muestra cambios de dirección condicionales, manejo de errores o bucles. La caché de los datos locales del administrador de preprocesamiento tampoco se muestra porque no afectan directamente al flujo de datos. El objetivo de este diagrama es mostrar los procesos involucrados en el procesamiento del valor de la métrica y la forma en que interactúan.

  • La recopilación de datos comienza con datos sin procesar de una fuente de datos. En este punto, los datos contienen solo ID, marca de tiempo y valor (pueden ser múltiples valores también)
  • No importa qué tipo de recolector de datos se utilice, la idea es la misma para controles activos o pasivos, para elementos de trampero, etc., ya que solo cambia el formato de datos y el iniciador de comunicación (ya sea datos El recolector está esperando una conexión y datos, o recolector de datos. inicia la comunicación y solicita los datos). Los datos brutos son validado, la configuración de la métrica se recupera del caché de configuración (los datos se enriquecen con los datos de configuración).
  • El mecanismo IPC basado en sockets se utiliza para pasar datos desde los recolectores de datos. al administrador de preprocesamiento. En este punto, el recolector de datos continúa recopilar datos sin esperar la respuesta del preprocesamiento gerente.
  • Se realiza el preprocesamiento de datos. Esto incluye la ejecución de pasos de preprocesamiento y procesamiento de artículos dependientes.

La métrica puede cambiar su estado a NO SOPORTADO mientras el preprocesamiento se realiza si alguno de los pasos de preprocesamiento falla.

  • Se están actualizando los datos históricos del caché de datos local del administrador de preprocesamiento. descargado en el caché del historial.
  • En este punto el flujo de datos se detiene hasta la próxima sincronización de caché de historial (cuando el proceso de sincronización de historial realiza datos sincronización).
  • El proceso de sincronización comienza con la normalización de datos y el almacenamiento de datos. en la base de datos Zabbix. La normalización de datos realiza conversiones al tipo de métrica deseado (tipo definido en la configuración de la métrica), incluido el truncamiento de datos textuales basado en tamaños predefinidos permitidos para esos tipos (HISTORY_STR_VALUE_LEN para cadena, HISTORY_TEXT_VALUE_LEN para texto e HISTORY_LOG_VALUE_LEN para valores logarítmicos). Los datos se envían a la base de datos de Zabbix después de realizar la normalización.

La métrica puede cambiar su estado a NO COMPATIBLE si la normalización de los datos falla (por ejemplo, cuando el valor textual no se puede convertir a número).

  • Se están procesando los datos recopilados - Se verifican los iniciadores, la configuración de la métrica se actualiza si la métrica pasa a ser NO SOPORTADA, etc.
  • Esto se considera el final del flujo de datos desde el punto de vista de procesamiento del valor de la métrica.

Preprocesamiento del valor de la métrica

Para visualizar el proceso de preprocesamiento de datos, podemos utilizar el siguiente diagrama simplificado:

El diagrama anterior muestra solo procesos, objetos y acciones principales relacionadas al preprocesamiento del valor de la métrica en una forma simplificada. El diagrama no muestra los cambios de dirección condicionales, manejo de errores o bucles. En este diagrama solo se muestra un trabajador de preprocesamiento ( los trabajadores de preprocesamiento múltiples se pueden utilizar en escenarios de la vida real), solo un valor de métrica se está procesando y asumimos que esta métrica requiere ejecutar al menos un paso de preprocesamiento. El objetivo de este diagrama es mostrar la idea detrás del proceso de preprocesamiento del valor de la métrica.

  • Los datos y el valor de la métrica se pasan al administrador de preprocesamiento mediante el mecanismo IPC basado en sockets.
  • La métrica se coloca en la cola de preprocesamiento.

La métrica se puede colocar al final o al principio de la cola de preprocesamiento. Las métricas internas de Zabbix siempre se colocan en el comienzo de la cola de preprocesamiento, mientras que otros tipos de métricas se ponen en la cola al final.

  • En este punto el flujo de datos se detiene hasta que haya al menos un trabajador de preprocesamiento desocupado (que no está ejecutando ninguna tarea).
  • Cuando el trabajador de preprocesamiento está disponible, la tarea de preprocesamiento se envía al trabajador.
  • Después de realizar el preprocesamiento (ejecución fallida y exitosa de los pasos de preprocesamiento), el valor preprocesado se devuelve al administrador de preprocesamiento.
  • El administrador de preprocesamiento convierte el resultado al formato deseado (definido por el tipo de valor de la métrica) y pone el resultado en la cola de preprocesamiento. Sí hay métricas dependientes para la métrica actual, luego se agregan las métricas dependientes a la cola de preprocesamiento también. Las métricas dependientes se ponen en la cola de preprocesamiento justo después de la métrica principal, pero solo para las métricas principales con valor establecido y no en estado NO SOPORTADO.
Canal de procesamiento de valor

El procesamiento del valor del artículo se ejecuta en múltiples pasos (o fases) mediante múltiples procesos. Esto puede causar:

  • El artículo dependiente puede recibir valores, mientras que EL valor maestro no puede. Esto se puede lograr mediante el siguiente caso de uso:
    • El elemento maestro tiene el tipo de valor "UINT", (se puede usar el elemento trampero), El elemento dependiente tiene el tipo de valor "TEXTO".
    • No se requieren pasos de preprocesamiento tanto para el maestro como para el elementos dependientes.
    • El valor textual (como "abc") debe pasarse al elemento maestro.
    • Como no hay pasos de preprocesamiento que ejecutar, el preprocesamiento El administrador verifica si el elemento maestro no está en estado NO SOPORTADO y si se establece el valor (ambos son verdaderos) y pone en cola el elemento dependiente con el mismo valor que el elemento maestro (ya que no hay preprocesamiento pasos).
    • Cuando tanto los elementos maestros como los dependientes llegan al historial fase de sincronización, el elemento maestro pasa a NO SOPORTARSE, debido al error de conversión de valor (los datos textuales no pueden ser convertido a entero sin signo).

Como resultado, el artículo dependiente recibe un valor, mientras que el artículo maestro cambia. su estado es NO SOPORTADO.

  • El artículo dependiente recibe un valor que no está presente en el artículo maestro. historia. El caso de uso es muy similar al anterior, excepto para el tipo de elemento maestro. Por ejemplo, si se utiliza el tipo "CHAR" para elemento maestro, entonces el valor del elemento maestro se truncará en el historial fase de sincronización, mientras que los elementos dependientes recibirán su valor del valor inicial (no truncado) del elemento maestro.

Cola de preprocesamiento

La cola de preprocesamiento es una estructura de datos FIFO que almacena valores preservando el orden en el que se revisan los valores mediante el administrador de preprocesamiento. Existen múltiples excepciones a la lógica FIFO:

  • Las métricas internas se ponen en cola al principio de la cola.
  • Las métricas dependientes siempre se ponen en cola después de la métrica principal

Para visualizar la lógica de la cola de preprocesamiento, podemos usar el siguiente diagrama:

Los valores de la cola de preprocesamiento se vacían desde el principio de la cola al primer valor sin procesar. Así, por ejemplo, el administrador de preprocesamiento eliminará los valores 1, 2 y 3, pero no eliminará el valor 5 ya que el valor 4 aún no se ha procesado:

Sólo quedarán dos valores en la cola (4 y 5) después del vaciado, los valores se agregan al caché de datos local del administrador de preprocesamiento y luego los valores se transfieren del caché local al caché histórico. El administrador de preprocesamiento puede vaciar valores de la caché de datos local métrica a métrica o en modo masivo (utilizado para métricas dependientes y valores recibidos de forma masiva).

Trabajadores de preprocesamiento

El archivo de configuración del servidor Zabbix permite a los usuarios establecer el número de procesos de trabajo de preprocesamiento. El parámetro de configuración StartPreprocessors debe usarse para establecer el número de instancias previamente bifurcadas de trabajadores de preprocesamiento. El número óptimo de trabajadores de preprocesamiento puede ser determinado por muchos factores, incluido el número de métricas "preprocesables" (métricas que requieren ejecutar cualquier paso de preprocesamiento), número de procesos de recopilación de datos, número promedio de pasos para el preprocesamiento de métricas, etc.

Pero suponiendo que no haya operaciones de preprocesamiento pesadas como análisis de grandes fragmentos XML/JSON, la cantidad de trabajadores de preprocesamiento puede coincidir con el número total de recolectores de datos. De esta manera, en su mayoría habrá (excepto en los casos en que los datos del recolector vienen en masa) ser al menos un trabajador de preprocesamiento desocupado para los datos recopilados.

Demasiados procesos de recopilación de datos (recolectores, recolectores inalcanzables, recolectores ODBC, recolectores HTTP, recolectores Java, pingers, tramppers, proxypollers) junto con el administrador IPMI, el capturador SNMP y el preprocesamiento Los trabajadores pueden agotar el límite de descriptores de archivos por proceso para el gerente de preprocesamiento. Esto hará que el servidor Zabbix se detenga (normalmente poco después del inicio, aunque a veces puede llevar más tiempo). El El archivo de configuración debe revisarse o el límite debe elevarse a evitar esta situación.