Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Únase a nuestro proyecto de traducción y ayude a traducir la documentación de Zabbix a su lengua materna.

2 Preprocesamiento del valor de la métrica

Descripción general

El preprocesamiento permite definir reglas de transformación para los valores de métricas recibidos. Una o varias transformaciones son posibles antes de guardarlos en la base de datos.

Las transformaciones se ejecutan en el orden en que están definidas. El preprocesamiento lo realiza el servidor Zabbix o el proxy (si las métricas se monitorean por delegación).

Tenga en cuenta que todos los valores pasados al preprocesamiento son del tipo cadena, la conversión al tipo de valor deseado (como se define en la configuración de la métrica) se realiza al final del proceso de preprocesamiento; Sin embargo, también podrán realizarse conversiones si así lo exige el paso de preprocesamiento correspondiente. Ver detalles del preprocesamiento para más información técnica.

Ver también: Ejemplos de uso

Configuración

Las reglas de preprocesamiento se definen en la pestaña Preprocesamiento del formulario de configuración de la métrica.

Una métrica se convertirá en no compatible si alguno de los los pasos de preprocesamiento fallan, a menos que se haya personalizado el manejo de errores usando la opción Personalizada en caso de error para descartar el valor o asignar un valor específico.

Para métricas de registro, los metadatos de registro (sin valor) siempre restablecerán la métrica en estado no compatible y hará que la métrica sea compatible de nuevo, incluso si el error inicial ocurrió después de recibir un valor de registro del agente.

Las macros de usuario y macros de usuario con contexto son compatibles en:

  • los parámetros de pasos de preprocesamiento, incluyendo el código Javascript;
  • parametros de gestión de errores personalizada (campos asignar valor a y asignar error a desde Zabbix 6.4.10)

El contexto se ignora cuando una macro se reemplaza con su valor. El valor de macro se inserta en el código tal cual, no es posible agregar escape adicional antes de colocar el valor en el código JavaScript. Tenga en cuenta que esto puede causar errores de JavaScript en algunos casos.

Tipo
Transformación Descripción
Texto
Expresión regular Haga coincidir el valor con la expresión regular <patrón> y reemplace el valor con <salida>. La expresión regular admite la extracción de un máximo de 10 grupos capturados con la secuencia \N. Si no coincide con el valor de entrada, el elemento no será compatible.
Parámetros:
patrón - expresión regular
salida - plantilla de formato de salida. Una secuencia de escape \N (donde N=1…9) se reemplaza con el N-ésimo grupo coincidente. Una secuencia de escape \0 se reemplaza con el texto coincidente.
Consulte la sección expresiones regulares para ver algunos ejemplos existentes.
Si marca la casilla de verificación Personalizar en caso de error , el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Reemplazar Encuentre la cadena de búsqueda y reemplácela con otra (o nada). Se reemplazarán todas las apariciones de la cadena de búsqueda.
Parámetros:
cadena de búsqueda: la cadena para buscar y reemplazar, distingue entre mayúsculas y minúsculas (obligatorio)
reemplazo: la cadena para reemplace la cadena de búsqueda con. La cadena de reemplazo también puede estar vacía, lo que permite eliminar la cadena de búsqueda cuando se encuentra.
Es posible usar secuencias de escape para buscar o reemplazar saltos de línea, retornos de carro, tabulaciones y espacios "\n \r \ t"; La barra invertida se puede escapar como "\\" y las secuencias de escape se pueden escapar como "\\n". El escape de saltos de línea, retorno de carro, tabulaciones se realiza automáticamente durante el descubrimiento de bajo nivel.
Recortar Eliminar los caracteres especificados al principio y al final del valor.
Recorte derecho Elimina los caracteres especificados del final del valor.
Recorte izquierdo Elimina los caracteres especificados del principio del valor.
Datos estructurados
XML XPath Extraiga valor o fragmento de datos XML usando la funcionalidad XPath.
Para que esta opción funcione, el servidor Zabbix debe estar compilado con soporte libxml.
Ejemplos:
number(/document/item /value) extraerá 10 de <document><item><value>10</value></item></document>
number(/document/item/@attribute) extraer 10 de <document><elemento atributo="10"></elemento></documento>
/documento/elemento extraerá <elemento><valor>10</valor>< /item> from <document><item><value>10</value></item></document>
Tenga en cuenta que los espacios de nombres no son compatibles.
Si marca Custom on fail casilla de verificación, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
JSON Path Extraer valor o fragmento de datos JSON mediante funcionalidad de JSONPath.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no deja de ser compatible en caso de un paso de preprocesamiento fallido y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
CSV a JSON Convierta datos de archivo CSV en formato JSON.
Para obtener más información, consulte: Preprocesamiento de CSV a JSON.
XML a JSON Convierta datos en formato XML a JSON.
Para obtener más información, consulte: Reglas de serialización.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un error específico mensaje.
SNMP
SNMP walk value Extract value by the specified OID/MIB name and apply formatting options:
Unchanged - return hex-string as unescaped hex string;
UTF-8 from hex-STRING - convert hex-string to UTF-8 string;
MAC from hex-STRING - validate hex-string as MAC address and return a proper MAC address string (where ' ' are replaced by ':');
Integer from BITS - convert the first 8 bytes of a bit string expressed as a sequence of hex characters (e.g. "1A 2B 3C 4D") into a 64-bit unsigned integer. In bit strings longer than 8 bytes, consequent bytes will be ignored.
If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
Aritmética
Multiplicador personalizado Multiplica el valor por el valor entero o de punto flotante especificado.
Utilice esta opción para convertir los valores recibidos en KB, MBps, etc. en B, Bps. De lo contrario, Zabbix no puede establecer correctamente prefijos (K, M, G, etc.).
Tenga en cuenta que si el tipo de información del elemento es Numérico (sin firmar), los valores entrantes con un la parte fraccionaria se recortará (es decir, '0.9' se convertirá en '0') antes de que se aplique el multiplicador personalizado.
Admitido: notación científica, por ejemplo, '1e+70' (desde la versión 2.2); macros de usuario y macros LLD (desde la versión 4.0); cadenas que incluyen macros, por ejemplo, {#MACRO}e+10, {$MACRO1}e+{$MACRO2}(desde la versión 5.2.3)
Las macros deben resolverse en un número entero o flotante. número de punto.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: descartar el valor, establecer un valor específico , o establecer un mensaje de error específico.
Cambiar
Cambio simple Calcula la diferencia entre el valor actual y el anterior.
Evaluado como valor-anterior_valor, donde
valor - valor actual; prev_value - valor recibido previamente
Esta configuración puede ser útil para medir un valor en constante crecimiento. Si el valor actual es menor que el valor anterior, Zabbix descarta esa diferencia (no almacena nada) y espera otro valor.
Solo se permite una operación de cambio por elemento.
Si marca la casilla de verificación Personalizar en caso de error , el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Cambio por segundo Calcula la velocidad de cambio de valor (diferencia entre el valor actual y el anterior) por segundo.
Evaluado como (valor-anterior_valor)/(** hora-anterior_hora**), donde
valor - valor actual; prev_value - valor recibido previamente; hora - marca de tiempo actual; prev_time - marca de tiempo del valor anterior.
Esta configuración es extremadamente útil para obtener la velocidad por segundo para un valor en constante crecimiento. Si el valor actual es menor que el valor anterior, Zabbix descarta esa diferencia (no almacena nada) y espera otro valor. Esto ayuda a trabajar correctamente, por ejemplo, con un ajuste (desbordamiento) de contadores SNMP de 32 bits.
Nota: Dado que este cálculo puede producir números de punto flotante, se recomienda configurar el 'Tipo de información' a Numérico (flotante), incluso si los valores brutos entrantes son enteros. Esto es especialmente relevante para números pequeños donde la parte decimal es importante. Si los valores de coma flotante son grandes y pueden exceder la longitud del campo 'flotante', en cuyo caso se puede perder todo el valor, se sugiere usar Numérico (sin signo) y, por lo tanto, recortar solo la parte decimal.
Solo se permite una operación de cambio por elemento.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Sistemas numéricos
Booleano a decimal Convierte el valor de formato booleano a decimal. La representación textual se traduce a 0 o 1. Por lo tanto, 'VERDADERO' se almacena como 1 y 'FALSO' se almacena como 0. Todos los valores coinciden sin distinguir entre mayúsculas y minúsculas. Los valores actualmente reconocidos son, para:
VERDADERO - verdadero, t, sí, y, encendido, activo, en ejecución, habilitado, disponible, correcto, maestro
FALSO - falso, f, no, n, apagado, inactivo, sin usar, deshabilitado, no disponible, err, esclavo
Además, cualquier valor numérico distinto de cero se considera VERDADERO y cero se considera FALSO.
Si marca la casilla de verificación Personalizado en caso de falla , el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Octal a decimal Convierta el valor de formato octal a decimal.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Hexadecimal a decimal Convierta el valor de formato hexadecimal a decimal.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Scripts personalizados
JavaScript Ingrese el código JavaScript en el bloque que aparece al hacer clic en el campo de parámetro o en un icono de lápiz.
Tenga en cuenta que la longitud de JavaScript disponible depende de la base de datos utilizada.
Para obtener más información información, consulte:
Preprocesamiento de Javascript.
Validación
En rango Defina un rango en el que debe estar un valor especificando valores mínimos/máximos (inclusive).
Se aceptan valores numéricos (incluido cualquier número de dígitos, parte decimal opcional y parte exponencial opcional, valores negativos) . Se pueden utilizar macros de usuario y macros de descubrimiento de bajo nivel. El valor mínimo debe ser menor que el máximo.
Debe existir al menos un valor.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible para especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Coincide con la expresión regular Especifique una expresión regular con la que debe coincidir un valor.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
No coincide con la expresión regular Especifique una expresión regular con la que un valor no debe coincidir.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Buscar error en JSON Buscar un mensaje de error de nivel de aplicación ubicado en JSONpath. Detenga el procesamiento si tuvo éxito y el mensaje no está vacío; de lo contrario, continúe procesando con el valor que tenía antes de este paso de preprocesamiento. Tenga en cuenta que estos errores de servicios externos se notifican al usuario tal cual, sin agregar información de pasos de preprocesamiento.
No se informará ningún error en caso de que no se pueda analizar JSON no válido.
Si marca la casilla de verificación Personalizar en caso de error , el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Buscar errores en XML Buscar un mensaje de error de nivel de aplicación ubicado en XPath. Detenga el procesamiento si tuvo éxito y el mensaje no está vacío; de lo contrario, continúe procesando con el valor que tenía antes de este paso de preprocesamiento. Tenga en cuenta que estos errores de servicios externos se notifican al usuario tal cual, sin agregar información de pasos de preprocesamiento.
No se informará ningún error en caso de que no se pueda analizar XML no válido.
Si marca la casilla de verificación Personalizar en caso de error , el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Comprueba si hay errores usando una expresión regular Busca un mensaje de error a nivel de aplicación usando una expresión regular. Detenga el procesamiento si tuvo éxito y el mensaje no está vacío; de lo contrario, continúe procesando con el valor que tenía antes de este paso de preprocesamiento. Tenga en cuenta que estos errores de servicio externo se notifican al usuario tal cual, sin agregar información de pasos de preprocesamiento.
Parámetros:
patrón - expresión regular
salida - plantilla de formato de salida. Una secuencia de escape \N (donde N=1…9) se reemplaza con el N-ésimo grupo coincidente. Una secuencia de escape \0 se reemplaza con el texto coincidente.
Si marca la casilla de verificación Personalizado en caso de error, el elemento no dejará de ser compatible en caso de que falle el paso de preprocesamiento y es posible especificar opciones personalizadas de manejo de errores: ya sea para descartar el valor, establecer un valor específico o establecer un mensaje de error específico.
Comprobar el valor no admitido Comprobar si hubo un error al recuperar el valor del elemento. Normalmente, eso llevaría a que el elemento dejara de ser compatible, pero puede modificar ese comportamiento especificando las opciones de manejo de errores Personalizado en caso de falla: para descartar el valor, para establecer un valor específico (en este caso, el elemento seguirá siendo compatible y el El valor se puede usar en disparadores) o establecer un mensaje de error específico. Tenga en cuenta que para este paso de preprocesamiento, la casilla de verificación Personalizado en caso de error está atenuada y siempre marcada.
Este paso siempre se ejecuta como el primer paso de preprocesamiento y se coloca sobre todos los demás después de guardar los cambios en el elemento. Solo se puede usar una vez.
Compatible desde 5.2.0.
Estrangulamiento
Descartar sin cambios Descartar un valor si no ha cambiado.
Si se descarta un valor, no se guarda en la base de datos y el servidor Zabbix no tiene conocimiento de que se recibió este valor. No se evaluarán expresiones de activación, como resultado, no se crearán/resolverán problemas para activadores relacionados. Las funciones funcionarán solo en función de los datos que realmente se guardan en la base de datos. Como las tendencias se crean en función de los datos de la base de datos, si no se guarda ningún valor durante una hora, tampoco habrá datos de tendencias para esa hora.
Solo se puede seleccionar una opción de limitación.
Solo se puede especificar una opción de limitación para un elemento.
Tenga en cuenta que es posible que las diferencias de valor muy pequeñas (menos de 0.000001) para los elementos monitoreados por el proxy Zabbix no sean descartadas correctamente por el proxy, sino que se almacenen en el historial. como el mismo valor si la base de datos del servidor Zabbix [no se ha actualizado] (https://www.zabbix.com/documentation/5.0/manual/installation/upgrade_notes_500#habilitation_extended_range_of_numeric_float_values).
Descartar sin cambios con latido Descartar un valor si no ha cambiado dentro del período de tiempo definido (en segundos).
Se admiten valores enteros positivos para especificar los segundos (mínimo: 1 segundo). En este campo se pueden utilizar sufijos de tiempo (por ejemplo, 30s, 1m, 2h, 1d). Las macros de usuario y las macros de descubrimiento de bajo nivel se pueden usar en este campo.
Si se descarta un valor, no se guarda en la base de datos y el servidor Zabbix no tiene conocimiento de que se recibió este valor. No se evaluarán expresiones de activación, como resultado, no se crearán/resolverán problemas para activadores relacionados. Las funciones funcionarán solo en función de los datos que realmente se guardan en la base de datos. Dado que las tendencias se crean en función de los datos de la base de datos, si no se guarda ningún valor durante una hora, tampoco habrá datos de tendencias para esa hora.
Solo se puede especificar una opción de limitación para un elemento.
* Tenga en cuenta* que es posible que los elementos monitoreados por el proxy de Zabbix tengan diferencias de valor muy pequeñas (menos de 0.000001) que el proxy no descarte correctamente, sino que se almacenen en el historial como el mismo valor si la base de datos del servidor de Zabbix [no se ha actualizado] (https://www.zabbix.com/documentation/5.0/manual/installation/upgrade_notes_500#habilitation_extended_range_of_numeric_float_values).
Prometeo
Patrón de Prometheus Utilice la siguiente consulta para extraer los datos necesarios de las métricas de Prometheus.
Consulte Comprobaciones de Prometheus para obtener más detalles.
Prometheus a JSON Convierta las métricas requeridas de Prometheus a JSON.
Consulte Comprobaciones de Prometheus para obtener más detalles.

Para cambiar y limitar los pasos de preprocesamiento Zabbix tiene que recordar el último valor para calcular/comparar el nuevo valor según sea necesario. Estos valores anteriores son manejados por el gestor de preprocesamiento. Si el servidor o proxy Zabbix se reinicia o hay algún cambio hecho a los pasos de preprocesamiento el último valor de la métrica correspondiente se reinicia, lo que resulta en:

  • para los pasos Cambio simple, Cambio por segundo - el siguiente valor será ignorado porque no hay un valor anterior al cambio calculado;
  • para los pasos Descartar sin cambios. Descartar sin cambios con latido - el siguiente valor nunca será descartado, incluso si debería haberlo sido debido a las reglas de descarte.

El parámetro Tipo de información de la métrica se muestra en la parte inferior de la pestaña cuando se define al menos un paso de preprocesamiento. Si es necesario, es posible cambiar el tipo de información sin salir de la pestaña Preprocesamiento. Consulte Crear una métrica para la descripción detallada del parámetro.

Si usa un multiplicador personalizado o almacena el valor como Cambiar por segundo para métricas con el tipo de información establecido en Numérico (sin signo) y el valor calculado resultante es en realidad un número flotante, el valor calculado aún es aceptado como correcto recortando la parte decimal y almacenando el valor como un entero.

Supported transformations

All supported transformations are listed below. Click on the transformation name to see full details about it.

Name Description Type
Regular expression Match the value to the regular expression and replace with the required output. Text
Replace Find the search string and replace it with another (or nothing).
Trim Remove specified characters from the beginning and end of the value.
Right trim Remove specified characters from the end of the value.
Left trim Remove specified characters from the beginning of the value.
XML XPath Extract value or fragment from XML data using XPath functionality. Structured data
JSON Path Extract value or fragment from JSON data using JSONPath functionality.
CSV to JSON Convert CSV file data into JSON format.
XML to JSON Convert data in XML format to JSON.
SNMP walk value Extract value by the specified OID/MIB name. SNMP
SNMP walk to JSON Convert SNMP values to JSON.
Custom multiplier Multiply the value by the specified integer or floating-point value. Arithmetic
Simple change Calculate the difference between the current and previous value. Change
Change per second Calculate the value change (difference between the current and previous value) speed per second.
Boolean to decimal Convert the value from boolean format to decimal. Numeral systems
Octal to decimal Convert the value from octal format to decimal.
Hexadecimal to decimal Convert the value from hexadecimal format to decimal.
JavaScript Enter JavaScript code. Custom scripts
In range Define a range that a value should be in. Validation
Matches regular expression Specify a regular expression that a value must match.
Does not match regular expression Specify a regular expression that a value must not match.
Check for error in JSON Check for an application-level error message located at JSONPath.
Check for error in XML Check for an application-level error message located at XPath.
Check for error using a regular expression Check for an application-level error message using a regular expression.
Check for not supported value Check if there was an error in retrieving item value.
Discard unchanged Discard a value if it has not changed. Throttling
Discard unchanged with heartbeat Discard a value if it has not changed within the defined time period.
Prometheus pattern Use the following query to extract the required data from Prometheus metrics. Prometheus
Prometheus to JSON Convert the required Prometheus metrics to JSON.

Note that for Change and Throttling preprocessing steps, Zabbix has to remember the last value to calculate/compare the new value as required. These previous values are handled by the preprocessing manager. If Zabbix server or proxy is restarted or there is any change made to preprocessing steps, the last value of the corresponding item is reset, resulting in:

  • for Simple change, Change per second steps - the next value will be ignored because there is no previous value to calculate the change from;
  • for Discard unchanged, Discard unchanged with heartbeat steps - the next value will never be discarded, even if it should have been because of discarding rules.
Regular expression

Match the value to the regular expression and replace with the required output.

Parameters:

  • pattern - the regular expression;
  • output - the output formatting template. An \N (where N=1…9) escape sequence is replaced with the Nth matched group. A \0 escape sequence is replaced with the matched text.

Comments:

  • A failure to match the input value will make the item unsupported;
  • The regular expression supports extraction of maximum 10 captured groups with the \N sequence;
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
  • Please refer to regular expressions section for some existing examples.
Replace

Find the search string and replace it with another (or nothing).

Parameters:

  • search string - the string to find and replace, case-sensitive (required);
  • replacement - the string to replace the search string with. The replacement string may also be empty effectively allowing to delete the search string when found.

Comments:

  • All occurrences of the search string will be replaced;
  • It is possible to use escape sequences to search for or replace line breaks, carriage return, tabs and spaces "\n \r \t \s"; backslash can be escaped as "\\" and escape sequences can be escaped as "\\n";
  • Escaping of line breaks, carriage return, tabs is automatically done during low-level discovery.
Trim

Remove specified characters from the beginning and end of the value.

Right trim

Remove specified characters from the end of the value.

Left trim

Remove specified characters from the beginning of the value.

XML XPath

Extract value or fragment from XML data using XPath functionality.

Comments:

  • For this option to work, Zabbix server (or Zabbix proxy) must be compiled with libxml support;
  • Namespaces are not supported;
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.

Examples:

number(/document/item/value) #will extract '10' from <document><item><value>10</value></item></document>
       number(/document/item/@attribute) #will extract '10' from <document><item attribute="10"></item></document>
       /document/item #will extract '<item><value>10</value></item>' from <document><item><value>10</value></item></document>
JSON Path

Extract value or fragment from JSON data using JSONPath functionality.

If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.

CSV to JSON

Convert CSV file data into JSON format.

For more information, see: CSV to JSON preprocessing.

XML to JSON

Convert data in XML format to JSON.

For more information, see: Serialization rules.

If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.

SNMP walk value

Extract value by the specified OID/MIB name and apply formatting options:

  • Unchanged - return hex-string as unescaped hex string;
  • UTF-8 from hex-STRING - convert hex-string to UTF-8 string;
  • MAC from hex-STRING - validate hex-string as MAC address and return a proper MAC address string (where ' ' are replaced by ':');
  • Integer from BITS - convert the first 8 bytes of a bit string expressed as a sequence of hex characters (e.g., "1A 2B 3C 4D") into a 64-bit unsigned integer. In bit strings longer than 8 bytes, consequent bytes will be ignored.

If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.

SNMP walk to JSON

Convert SNMP values to JSON.

Specify a field name in the JSON and the corresponding SNMP OID path. Field values will be populated by values in the specified SNMP OID path.

Comments:

  • Similar value formatting options as in the SNMP walk value step are available;
  • You may use this preprocessing step for SNMP OID discovery;
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
SNMP get value

Apply formatting options to the SNMP get value:

  • UTF-8 from Hex-STRING - convert hex-string to UTF-8 string;
  • MAC from Hex-STRING - validate hex-string as MAC address and return a proper MAC address string (where ' ' are replaced by ':');
  • Integer from BITS - convert the first 8 bytes of a bit string expressed as a sequence of hex characters (e.g., "1A 2B 3C 4D") into a 64-bit unsigned integer. In bit strings longer than 8 bytes, consequent bytes will be ignored.

If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.

Custom multiplier

Multiply the value by the specified integer or floating-point value.

Comments:

  • Use this option to convert values received in KB, MBps, etc., into B, Bps. Otherwise, Zabbix cannot correctly set prefixes (K, M, G, etc.).
  • Note that if the item type of information is Numeric (unsigned), incoming values with a fractional part will be trimmed (i.e., '0.9' will become '0') before the custom multiplier is applied;
  • If you use a custom multiplier or store value as Change per second for items with the type of information set to Numeric (unsigned) and the resulting calculated value is actually a float number, the calculated value is still accepted as a correct one by trimming the decimal part and storing the value as an integer;
  • Supported: scientific notation, for example, 1e+70; user macros and LLD macros; strings that include macros, for example, {#MACRO}e+10, {$MACRO1}e+{$MACRO2}. The macros must resolve to an integer or a floating-point number.
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
Simple change

Calculate the difference between the current and previous value.

Comments:

  • This step can be useful to measure a constantly growing value;
  • Evaluated as value-prev_value, where value - the current value; prev_value - the previously received value;
  • Only one change operation per item ("Simple change" or "Change per second") is allowed;
  • If the current value is smaller than the previous value, Zabbix discards that difference (stores nothing) and waits for another value;
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
Change per second

Calculate the value change (difference between the current and previous value) speed per second.

Comments:

  • This step is extremely useful to get the speed per second of a constantly growing value;
  • As this calculation may produce floating-point numbers, it is recommended to set the 'Type of information' to Numeric (float), even if the incoming raw values are integers. This is especially relevant for small numbers where the decimal part matters. If the floating-point values are large and may exceed the 'float' field length in which case the entire value may be lost, it is actually suggested to use Numeric (unsigned) and thus trim only the decimal part.
  • Evaluated as (value-prev_value)/(time-prev_time), where value - the current value; prev_value - the previously received value; time - the current timestamp; prev_time - the timestamp of the previous value;
  • Only one change operation per item ("Simple change" or "Change per second") is allowed;
  • If the current value is smaller than the previous value, Zabbix discards that difference (stores nothing) and waits for another value. This helps to work correctly with, for instance, a wrapping (overflow) of 32-bit SNMP counters.
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
Boolean to decimal

Convert the value from boolean format to decimal.

Comments:

  • The textual representation is translated into either 0 or 1. Thus, 'TRUE' is stored as 1 and 'FALSE' is stored as 0. All values are matched in a case-insensitive way. Currently recognized values are, for TRUE - true, t, yes, y, on, up, running, enabled, available, ok, master; for FALSE - false, f, no, n, off, down, unused, disabled, unavailable, err, slave. Additionally, any non-zero numeric value is considered to be TRUE and zero is considered to be FALSE.
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
Octal to decimal

Convert the value from octal format to decimal.

If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.

Hexadecimal to decimal

Convert the value from hexadecimal format to decimal.

If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.

JavaScript

Enter JavaScript code in the block that appears when clicking in the parameter field or on the pencil icon.

Comments:

In range

Define a range that a value should be in by specifying minimum/maximum values (inclusive).

Comments:

  • Numeric values are accepted (including any number of digits, optional decimal part and optional exponential part, negative values);
  • The minimum value should be less than the maximum;
  • At least one value must exist;
  • User macros and low-level discovery macros can be used;
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
Matches regular expression

Specify a regular expression that a value must match.

If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.

Does not match regular expression

Specify a regular expression that a value must not match.

If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.

Check for error in JSON

Check for an application-level error message located at JSONPath. Stop processing if succeeded and the message is not empty; otherwise, continue processing with the value that was before this preprocessing step.

Comments:

  • These external service errors are reported to the user as is, without adding preprocessing step information;
  • No error will be reported in case of failing to parse invalid JSON;
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
Check for error in XML

Check for an application-level error message located at XPath. Stop processing if succeeded and the message is not empty; otherwise, continue processing with the value that was before this preprocessing step.

Comments:

  • These external service errors are reported to the user as is, without adding preprocessing step information;
  • No error will be reported in case of failing to parse invalid XML;
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
Check for error using a regular expression

Check for an application-level error message using a regular expression. Stop processing if succeeded and the message is not empty; otherwise, continue processing with the value that was before this preprocessing step.

Parameters:

  • pattern - the regular expression;
  • output - the output formatting template. An \N (where N=1…9) escape sequence is replaced with the Nth matched group. A \0 escape sequence is replaced with the matched text.

Comments:

  • These external service errors are reported to the user as is, without adding preprocessing step information;
  • If you mark the Custom on fail checkbox, it is possible to select custom error-handling options: either to discard the value, set a specified value, or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected.
Check for not supported value

Check if there was an error in retrieving item value.

Comments:

  • Normally that would lead to the item becoming unsupported, but you may modify that behavior by specifying the Custom on fail error-handling options: to discard the value, to set a specified value (that can also be used in triggers) or set a specified error message. In case of a failed preprocessing step, the item will not become unsupported if the option to discard the value or set a specified value is selected. Note that for this preprocessing step, the Custom on fail checkbox is grayed out and always marked.
  • This step is always executed as the first preprocessing step and is placed above all others after saving changes to the item. It can be used only once.
Discard unchanged

Discard a value if it has not changed.

Comments:

  • If a value is discarded, it is not saved in the database and Zabbix server has no knowledge that this value was received. No trigger expressions will be evaluated, as a result, no problems for related triggers will be created/resolved. Functions will work only based on data that is actually saved in the database. As trends are built based on data in the database, if there is no value saved for an hour then there will also be no trends data for that hour.
  • Only one throttling option can be specified per item.
Discard unchanged with heartbeat

Discard a value if it has not changed within the defined time period (in seconds).

Comments:

  • Positive integer values are supported to specify the seconds (minimum - 1 second);
  • Time suffixes can be used (e.g., 30s, 1m, 2h, 1d);
  • User macros and low-level discovery macros can be used;
  • If a value is discarded, it is not saved in the database and Zabbix server has no knowledge that this value was received. No trigger expressions will be evaluated, as a result, no problems for related triggers will be created/resolved. Functions will work only based on data that is actually saved in the database. As trends are built based on data in the database, if there is no value saved for an hour then there will also be no trends data for that hour.
  • Only one throttling option can be specified per item.
Prometheus pattern

Use the following query to extract the required data from Prometheus metrics.

See Prometheus checks for more details.

Prometheus to JSON

Convert the required Prometheus metrics to JSON.

See Prometheus checks for more details.

Macro support

User macros and user macros with context are supported in the preprocessing parameters, including JavaScript code.

The macro context is ignored when a macro is replaced with its value. The macro value is inserted in the code as is, it is not possible to add additional escaping before placing the value in the JavaScript code. Please be advised that this can cause JavaScript errors in some cases.

Testing

See preprocessing testing.