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.
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 métrica puede cambiar su estado a NO SOPORTADO mientras el preprocesamiento se realiza si alguno de los pasos de preprocesamiento falla.
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).
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.
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.
Item value processing is executed in multiple steps (or phases) by multiple processes. This can cause:
UINT
, (trapper item can be used), dependent item has value type TEXT
.As a result, dependent item receives a value, while master item changes its state to NOT SUPPORTED.
CHAR
type is used for master item, then master item value will be truncated at the history synchronization phase, while dependent items will receive their value from the initial (not truncated) value of master item.Preprocessing queue is a FIFO data structure that stores values preserving the order in which values are revieved by preprocessing manager. There are multiple exceptions to FIFO logic:
To visualize the logic of preprocessing queue, we can use the following diagram:
Values from the preprocessing queue are flushed from the beginning of the queue to the first unprocessed value. So, for example, preprocessing manager will flush values 1, 2 and 3, but will not flush value 5 as value 4 is not processed yet:
Only two values will be left in queue (4 and 5) after flushing, values are added into local data cache of preprocessing manager and then values are transferred from local cache into history cache. Preprocessing manager can flush values from local data cache in single item mode or in bulk mode (used for dependent items and values received in bulk).
Zabbix server configuration file allows users to set count of preprocessing worker processes. StartPreprocessors configuration parameter should be used to set number of pre-forked instances of preprocessing workers. Optimal number of preprocessing workers can be determined by many factors, including the count of "preprocessable" items (items that require to execute any preprocessing steps), count of data gathering processes, average step count for item preprocessing, etc.
But assuming that there is no heavy preprocessing operations like parsing of large XML / JSON chunks, number of preprocessing workers can match total number of data gatherers. This way, there will mostly (except for the cases when data from gatherer comes in bulk) be at least one unoccupied preprocessing worker for collected data.
Too many data gathering processes (pollers, unreachable pollers, HTTP pollers, Java pollers, pingers, trappers, proxypollers) together with IPMI manager, SNMP trapper and preprocessing workers can exhaust the per-process file descriptor limit for the preprocessing manager. This will cause Zabbix server to stop (usually shortly after the start, but sometimes it can take more time). The configuration file should be revised or the limit should be raised to avoid this situation.