Esta sección proporciona detalles sobre el preprocesamiento de valores de ítems. El preprocesamiento de valores de ítems permite definir y ejecutar reglas de transformación para los valores de ítems recibidos.
El preprocesamiento es gestionado por el proceso del gestor de preprocesamiento junto con los trabajadores de preprocesamiento que realizan los pasos de preprocesamiento. Todos los valores con preprocesamiento (antes de Zabbix 7.0.17, todos los valores), recibidos de diferentes recolectores de datos, pasan por el gestor de preprocesamiento antes de ser añadidos a la caché de historial. Se utiliza comunicación IPC basada en sockets entre los recolectores de datos (pollers, trappers, etc.) y el proceso de preprocesamiento. Tanto el servidor Zabbix como el proxy Zabbix (para los ítems monitorizados por el proxy) realizan los pasos de preprocesamiento.
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 datos locales del administrador de preprocesamiento tampoco se muestra porque no afecta directamente el 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.
Una métrica puede cambiar su estado a NO SOPORTADA mientras se realiza el preprocesamiento si alguno de los pasos de preprocesamiento falla.
Una métrica puede cambiar su estado a NO SOPORTADA si falla la normalización de datos (por ejemplo, cuando un valor textual no se puede convertir a número).
El preprocesamiento de datos se realiza en los siguientes pasos:
Tenga en cuenta que en el diagrama el preprocesamiento del ítem maestro está ligeramente simplificado al omitir la caché de preprocesamiento.
La cola de preprocesamiento está organizada como:
El almacenamiento en caché del preprocesamiento se introdujo para mejorar el rendimiento del preprocesamiento de múltiples métricas dependientes que tienen pasos de preprocesamiento similares (que es un resultado LLD común).
El almacenamiento en caché se realiza preprocesando una métrica dependiente y reutilizando algunos de los datos de preprocesamiento interno para el resto de las métricas dependientes. La caché de preprocesamiento solo se admite para el primer paso de preprocesamiento de los siguientes tipos:
[?(@.path == "value")]
)El archivo de configuración del servidor Zabbix permite a los usuarios establecer la cantidad de hilos de trabajo de preprocesamiento. El parámetro de configuración StartPreprocessors debe utilizarse para definir el número de instancias preiniciadas de trabajadores de preprocesamiento, que al menos debe coincidir con el número de núcleos de CPU disponibles.
Si las tareas de preprocesamiento no están limitadas por la CPU e implican solicitudes de red frecuentes, se recomienda configurar trabajadores adicionales. El número óptimo de trabajadores de preprocesamiento puede determinarse por muchos factores, incluyendo la cantidad de elementos "preprocesables" (elementos que requieren ejecutar cualquier paso de preprocesamiento), la cantidad de procesos de recopilación de datos, el número promedio de pasos para el preprocesamiento de elementos, etc. Un número insuficiente de trabajadores puede llevar a un alto uso de memoria. Para solucionar el uso excesivo de memoria en su instalación de Zabbix, consulte Perfilado del uso excesivo de memoria con tcmalloc.
Pero suponiendo que no haya operaciones de preprocesamiento pesadas como el análisis de grandes fragmentos XML/JSON, el número de trabajadores de preprocesamiento puede coincidir con el número total de recolectores de datos. De este modo, en la mayoría de los casos (excepto cuando los datos del recolector llegan en bloque) habrá al menos un trabajador de preprocesamiento desocupado para los datos recopilados.
Demasiados procesos de recopilación de datos (sondeadores, sondeadores inalcanzables, sondeadores ODBC, sondeadores HTTP, sondeadores Java, pingers, trappers, proxypollers) junto con el gestor IPMI, el receptor SNMP y los trabajadores de preprocesamiento pueden agotar el límite de descriptores de archivos por proceso para el gestor de preprocesamiento.
Agotar el límite de descriptores de archivos por proceso hará que el servidor Zabbix se detenga, normalmente poco después del inicio, aunque a veces puede tardar más. Para evitar estos problemas, revise el archivo de configuración del servidor Zabbix para optimizar el número de comprobaciones y procesos concurrentes. Además, si es necesario, asegúrese de que el límite de descriptores de archivos esté configurado lo suficientemente alto comprobando y ajustando los límites del sistema.
El procesamiento del valor del artículo se ejecuta en múltiples pasos (o fases) mediante múltiples procesos. Esto puede causar:
Como resultado, el artículo dependiente recibe un valor, mientras que el artículo maestro cambia su estado es NO SOPORTADO.