1 Comprobación de Prometheus

Descripción general

Zabbix puede consultar métricas expuestas en el formato de línea de Prometheus.

Se requieren dos pasos para comenzar a recopilar datos de Prometheus:

  • un item maestro HTTP que apunte al endpoint de datos adecuado, por ejemplo https://<prometheus host>/metrics
  • items dependientes que utilicen una opción de preprocesamiento de Prometheus para consultar los datos requeridos a partir de las métricas recopiladas por el item maestro

Hay dos opciones de preprocesamiento de datos de Prometheus:

  • Patrón de Prometheus - se usa en items normales para consultar datos de Prometheus
  • Prometheus a JSON - se usa en items normales y para el descubrimiento de bajo nivel. En este caso, los datos de Prometheus consultados se devuelven en formato JSON.
Procesamiento masivo

El procesamiento masivo es compatible con los items dependientes. Para habilitar el almacenamiento en caché y la indexación, el preprocesamiento de Prometheus pattern debe ser el primer paso de preprocesamiento. Cuando Prometheus pattern es el primer paso de preprocesamiento, los datos de Prometheus analizados se almacenan en caché y se indexan mediante la primera condición <label>==<value> en el paso de preprocesamiento de Prometheus pattern. Esta caché se reutiliza al procesar otros items dependientes en este lote. Para un rendimiento óptimo, la primera etiqueta debe ser la que tenga más valores diferentes.

Si hay otro preprocesamiento que deba realizarse antes del primer paso, debe trasladarse al item maestro o a un nuevo item dependiente que se usaría como item maestro para los items dependientes.

Configuración

Suponiendo que tiene configurado el item maestro HTTP, debe crear un dependent item que utilice un paso de preprocesamiento de Prometheus:

  • Introduzca los parámetros generales del dependent item en el formulario de configuración
  • Vaya a la pestaña Preprocessing
  • Seleccione una opción de preprocesamiento de Prometheus (Prometheus pattern o Prometheus to JSON)

Los siguientes parámetros son específicos de la opción de preprocesamiento Prometheus pattern:

Parameter Description Examples
Pattern Para definir el patrón de datos requerido, puede usar un lenguaje de consulta similar al lenguaje de consulta de Prometheus (consulte la tabla comparativa), por ejemplo:
<metric name> - seleccionar por nombre de métrica
{__name__="<metric name>"} - seleccionar por nombre de métrica
{__name__=\~"<regex>"} - seleccionar por nombre de métrica que coincida con una expresión regular
{<label name>="<label value>",...} - seleccionar por nombre de etiqueta
{<label name>=\~"<regex>",...} - seleccionar por nombre de etiqueta que coincida con una expresión regular
{__name__=\~".*"}==<value> - seleccionar por valor de métrica
O una combinación de las anteriores:
<metric name>{<label1 name>="<label1 value>",<label2 name>=\~"<regex>",...}==<value>

El valor de la etiqueta puede ser cualquier secuencia de caracteres UTF-8, pero los caracteres barra invertida, comillas dobles y salto de línea deben escaparse como \\, \" y \n respectivamente; los demás caracteres no deben escaparse.
wmi_os_physical_memory_free_bytes
cpu_usage_system{cpu="cpu-total"}
cpu_usage_system{cpu=\~".*"}
cpu_usage_system{cpu="cpu-total",host=\~".*"}
wmi_service_state{name="dhcp"}==1
wmi_os_timezone{timezone=\~".*"}==1
Result processing Especifique si desea devolver el valor, la etiqueta o aplicar la función adecuada (si el patrón coincide con varias líneas y el resultado debe agregarse):
value - devolver el valor de la métrica (error si coinciden varias líneas)
label - devolver el valor de la etiqueta especificada en el campo Label (error si coinciden varias métricas)
sum - devolver la suma de los valores
min - devolver el valor mínimo
max - devolver el valor máximo
avg - devolver el valor promedio
count - devolver el recuento de valores
Este campo solo está disponible para la opción Prometheus pattern.
Consulte también los ejemplos de uso de parámetros más abajo.
Output Defina el nombre de la etiqueta (opcional). En este caso, se devuelve el valor correspondiente al nombre de la etiqueta.
Este campo solo está disponible para la opción Prometheus pattern, si se selecciona 'Label' en el campo Result processing.

Ejemplos de uso de parámetros

  1. El caso de uso más común es devolver el value. Para devolver el valor de /var/db a partir de:

node_disk_usage_bytes{path="/var/cache"} 2.1766144e+09
node_disk_usage_bytes{path="/var/db"} 20480
node_disk_usage_bytes{path="/var/dpkg"} 8192
node_disk_usage_bytes{path="/var/empty"} 4096

use los siguientes parámetros:

  • Pattern - node_disk_usage_bytes{path="/var/db"}
  • Result processing - seleccione 'value'
  1. También puede interesarle el valor average de todos los parámetros node_disk_usage_bytes:
  • Pattern - node_disk_usage_bytes
  • Result processing - seleccione 'avg'
  1. Aunque Prometheus solo admite datos numéricos, es habitual usar una solución alternativa que también permite devolver la descripción textual relevante. Esto se puede lograr con un filtro y especificando la etiqueta. Así, para devolver el valor de la etiqueta 'color' a partir de

elasticsearch_cluster_health_status{cluster="elasticsearch",color="green"} 1
elasticsearch_cluster_health_status{cluster="elasticsearch",color="red"} 0
elasticsearch_cluster_health_status{cluster="elasticsearch",color="yellow"} 0

use los siguientes parámetros:

  • Pattern - elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
  • Result processing - seleccione 'label'
  • Label - especifique 'color'

El filtro (basado en el valor numérico '1') coincidirá con la fila adecuada, mientras que la etiqueta devolverá la descripción del estado de salud (actualmente 'green'; pero potencialmente también 'red' o 'yellow').

Prometheus a JSON

Los datos de Prometheus se pueden usar para el descubrimiento de bajo nivel. En este caso se necesitan datos en formato JSON, y la opción de preprocesamiento Prometheus to JSON devolverá exactamente eso.

Para más detalles, consulte Discovery using Prometheus data.

Comparación del lenguaje de consulta

La siguiente tabla enumera las diferencias y similitudes entre PromQL y el lenguaje de consulta de preprocesamiento de Zabbix para Prometheus.

Selector de vector instantáneo de PromQL Preprocesamiento de Zabbix para Prometheus
Diferencias
Destino de la consulta Prometheus server Texto plano en formato de exposición de Prometheus
Devuelve Vector instantáneo Valor de métrica o etiqueta (patrón de Prometheus)
Array de métricas para un único valor en JSON (Prometheus a JSON)
Operadores de coincidencia de etiquetas =, !=, =\~, !\~ =, !=, =\~, !\~
Expresión regular usada en la coincidencia de nombre de etiqueta o métrica RE2 PCRE
Operadores de comparación Ver lista Solo se admite == (igual) para el filtrado de valores
Similitudes
Selección por nombre de métrica que coincide con una cadena <nombre de métrica> o {__name__="<nombre de métrica>"} <nombre de métrica> o {__name__="<nombre de métrica>"}
Selección por nombre de métrica que coincide con una expresión regular {__name__=\~"<regex>"} {__name__=\~"<regex>"}
Selección por valor de <nombre de etiqueta> que coincide con una cadena {<nombre de etiqueta>="<valor de etiqueta>",...} {<nombre de etiqueta>="<valor de etiqueta>",...}
Selección por valor de <nombre de etiqueta> que coincide con una expresión regular {<nombre de etiqueta>=\~"<regex>",...} {<nombre de etiqueta>=\~"<regex>",...}
Selección por valor que coincide con una cadena {__name__=\~".*"} == <valor> {__name__=\~".*"} == <valor>