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:
https://<prometheus host>/metrics
Existen dos opciones de preprocesamiento de datos de Prometheus:
El procesamiento por lotes es compatible con las métricas dependientes. Para habilitar el almacenamiento en caché y la indexación, el preprocesamiento Patrón Prometheus debe ser el primer paso de preprocesamiento. Cuando Patrón Prometheus es el primer paso de preprocesamiento, los datos Prometheus analizados se almacenan en caché y se indexan por la primera condición <etiqueta>==<valor>
en el paso de preprocesamiento Patrón Prometheus. Esta caché se reutiliza al procesar otras métricas 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 elemento principal o a una nueva métrica dependiente que se utilizaría como métrica principal para las métricas dependientes.
Siempre que tenga configurada la métrica principal HTTP, debe crear una métrica dependiente que utilice un paso de preprocesamiento Prometheus:
Los siguientes parámetros son específicos de la opción de preprocesamiento Patrón Prometheus:
Parámetro | Descripción | Ejemplos |
---|---|---|
Patrón | Para definir el patrón de datos requerido puede utilizar un lenguaje de consulta similar al lenguaje de consulta de Prometheus (ver tabla comparativa), por ejemplo: <nombre de la métrica> - seleccionar por nombre de métrica {__name__="<nombre de la métrica>"} - seleccionar por nombre de métrica {__name__=~"<expresión regular>"} - seleccionar por nombre de métrica que coincida con una expresión regular {<nombre de la etiqueta>="<valor de la etiqueta>",...} - seleccionar por nombre de etiqueta {<nombre de la etiqueta>=~"<expresión regular>",...} - seleccionar por nombre de etiqueta que coincida con una expresión regular {__name__=~".*"}==<valor> - seleccionar por valor de métrica O una combinación de lo anterior: <nombre de la métrica>{<nombreEtiqueta1>="<valorEtiqueta1>",<nombreEtiqueta2>=~"<expresión regular>",...}==<valor> 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; otros 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 |
Procesamiento del resultado | Especifique si desea devolver el valor, la etiqueta o aplicar la función apropiada (si el patrón coincide con varias líneas y el resultado necesita ser agregado): valor - devuelve el valor de la métrica (error si se encuentran varias líneas) etiqueta - devuelve el valor de la etiqueta especificada en el campo Etiqueta (error si se encuentran varias métricas) suma - devuelve la suma de los valores mín - devuelve el valor mínimo máx - devuelve el valor máximo prom - devuelve el valor promedio cuenta - devuelve el número de valores Este campo solo está disponible para la opción Patrón Prometheus. |
Consulte también los ejemplos de uso de parámetros a continuación. |
Salida | 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 Patrón Prometheus, si se selecciona 'Etiqueta' en el campo Procesamiento del resultado. |
Ejemplos de uso de parámetros
/var/db
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
utilice los siguientes parámetros:
node_disk_usage_bytes{path="/var/db"}
node_disk_usage_bytes
:node_disk_usage_bytes
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
utilice los siguientes parámetros:
elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
El filtro (basado en el valor numérico '1') coincidirá con la fila apropiada, mientras que la etiqueta devolverá la descripción del estado de salud (actualmente 'green'; pero potencialmente también 'red' o 'yellow').
Los datos de Prometheus pueden utilizarse para el descubrimiento de bajo nivel. En este caso, se necesitan datos en formato JSON y la opción de preprocesamiento Prometheus a JSON devolverá exactamente eso.
Para más detalles, consulte Descubrimiento utilizando datos de Prometheus.
La siguiente tabla enumera las diferencias y similitudes entre PromQL y el lenguaje de consulta de preprocesamiento Prometheus de Zabbix.
Selector de vector instantáneo de PromQL | Preprocesamiento Prometheus de Zabbix | |
---|---|---|
Diferencias | ||
Destino de la consulta | Servidor Prometheus | Texto plano en formato de exposición Prometheus |
Devuelve | Vector instantáneo | Valor de métrica o etiqueta (patrón Prometheus) Array de métricas para valor único en JSON (Prometheus a JSON) |
Operadores de coincidencia de etiquetas | =, !=, =~, !~ | =, !=, =~, !~ |
Expresión regular utilizada 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 es igual a 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__=~"<expresión regular>"} | {__name__=~"<expresión regular>"} |
Selección por valor de <nombre de etiqueta> que es igual a 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>=~"<expresión regular>",...} | {<nombre de etiqueta>=~"<expresión regular>",...} |
Selección por valor que es igual a una cadena | {__name__=~".*"} == <valor> | {__name__=~".*"} == <valor> |