15. Preprocesamiento de ítems -pestaña dedicada en GUI-

Aplicar transformaciones automáticas a los datos antes de almacenarlos


Introducción operativa

No todo dato que llega está listo para usarse.

Algunos deben limpiarse, transformarse o interpretarse antes de que Zabbix los almacene o evalue con triggers.

Zabbix ofrece una pestaña específica llamada “Preprocessing” en cada ítem para aplicar transformaciones automáticas en tiempo real, sin necesidad de scripts externos.

Es fundamental para:

  • Normalizar formatos

  • Corregir datos brutos

  • Filtrar errores o vacíos

  • Preparar datos para triggers más precisos


🧩 ¿Dónde se encuentra?

  1. GUI → Configuration → Hosts → Items

  2. Editar un ítem (ej. cpu.load)

  3. Ir a la pestaña: “Preprocessing”


🧪 Flujo conceptual


[Valor recibido] → [Preprocesamiento] → [Valor almacenado] → [Trigger o gráfico]

Zabbix no almacena el dato original, sino el resultado final después de aplicar los pasos de la cadena de preprocesamiento.


🧩 Tipos de transformaciones disponibles

| Tipo                                 | Descripción breve                          | Ejemplo operativo                             |

| ------------------------------------ | ------------------------------------------ | --------------------------------------------- |

| Custom multiplier                | Multiplica por un valor fijo               | Temperatura reportada en décimas (523 → 52.3) |

| Regular expression               | Extrae parte del texto                     | Obtener código de error de log (ERR42)      |

| Replace/Trim                     | Reemplaza o recorta texto                  | Limpiar sufijos innecesarios ("ms", "%")      |

| JSONPath / XML XPath             | Extrae valor de estructuras JSON o XML     | Obtener valor de "status": "ok"             |

| Check for not supported          | Verifica si el valor recibido es válido    | Evitar guardar null, NaN, timeout       |

| Discard unchanged with heartbeat | Evita guardar valores que no cambian       | Disminuye espacio en DB y ruido visual        |

| Prometheus pattern               | Extrae valores de exposiciones Prometheus  | Útil con endpoints tipo /metrics            |

| CSV to JSON                      | Convierte respuesta CSV en estructura JSON | Procesar salidas de sensores                  |

| JavaScript                       | Ejecuta lógica personalizada               | Redondear, condicionar, aplicar lógica        |


Encadenamiento de pasos

Puedes definir varios pasos consecutivos.

Zabbix procesará el dato en orden, paso por paso.

Ejemplo:

  1. Trim right: " MB"

  2. Custom multiplier: 1048576

  3. Round: 0

→ Convierte "52 MB" a 54525952


Casos reales

Caso 1: Sensor de temperatura via SNMP

  • Valor recibido: 254

  • Significado: 25.4 °C

  • Acción: aplicar multiplicador 0.1


Preprocessing:

→ Custom multiplier: 0.1

Caso 2: API devuelve texto con ruido

  • JSON recibido:

{"status": "OK", "time": "2024-12-10T12:34:56Z"}
  • Interés: solo queremos "status"

Preprocessing:

→ JSONPath: $.status

Caso 3: Log genera líneas como:


[WARN] Module XYZ failed: Code ERR32
  • Interés: Extraer ERR32

Preprocessing:

→ RegExp: ERR(\d+) → \1

⚠️ Errores comunes y diagnósticos

| Síntoma                                            | Causa probable                                  | Solución                                        |

| -------------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- |

| Ítem “not supported” tras activar preprocesamiento | Expresión mal formada o dato incompatible       | Validar formato recibido con “Latest data”      |

| Se guarda valor vacío (-)                        | Extracción fallida o regex sin coincidencia     | Usar Check for not supported como paso previo |

| El valor no cambia, pero sigue almacenándose       | No se activó Discard unchanged with heartbeat | Agregarlo como último paso                      |

| JavaScript no funciona                             | Sintaxis incorrecta, sin return explícito     | Revisar consola de ejemplo, usar return       |


🧠 Comparativa: valor original vs procesado vs mostrado

| Etapa           | ¿Dónde se ve?                         | ¿Qué implica?                             |

| --------------- | ------------------------------------- | ----------------------------------------- |

| Valor original  | En algunos casos con debugging/logs   | Solo accesible internamente               |

| Valor procesado | Latest data y almacenado en base    | Es el que se usa para triggers y gráficos |

| Valor mostrado  | Puede tener Units visuales añadidos | No altera el valor real (solo apariencia) |


Tip pro

Todo valor que pasa por preprocesamiento puede perder su significado original si no se documenta bien.

Es recomendable anotar en las notas del ítem lo que hace cada paso de la cadena.


✅ Resultado esperado

  • El operador puede identificar cuándo un ítem necesita preprocesamiento

  • Sabe configurar transformaciones comunes como multiplicadores o expresiones regulares

  • Conoce el orden y efecto de cada paso

  • Entiende la diferencia entre valor original, procesado y mostrado

  • Puede diagnosticar errores cuando el ítem se vuelve "not supported"