Conceptos Básicos de PromQL

DockerBeginner
Practicar Ahora

Introducción

Bienvenido a este laboratorio práctico sobre los conceptos básicos de PromQL. Prometheus es una potente herramienta de monitorización y alerta de código abierto, y su lenguaje de consulta, PromQL, es el núcleo de su potencia. PromQL le permite seleccionar y agregar datos de series temporales en tiempo real.

En este laboratorio, trabajará con un entorno preconfigurado que consta de un servidor Prometheus que está recopilando activamente métricas de un Node Exporter. Su objetivo es aprender la sintaxis fundamental de PromQL para consultar estos datos, comenzando con selecciones de métricas simples y avanzando hacia consultas más complejas utilizando funciones y filtros.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Comprender el Entorno Proporcionado

En este paso, se familiarizará con el entorno del laboratorio. El proceso de configuración ya ha iniciado dos contenedores Docker para usted. No necesita realizar ninguna configuración.

Los dos contenedores son:

  • node-exporter: El propósito de este contenedor es exponer una amplia variedad de métricas relacionadas con hardware y kernel de la máquina host en la que se está ejecutando.
  • prometheus: Este es el propio servidor Prometheus. Está configurado para "scrapear" (recopilar) las métricas del node-exporter y almacenarlas en su base de datos de series temporales.

Puede verificar que ambos contenedores se están ejecutando ejecutando el comando docker ps en la terminal.

docker ps

Debería ver una salida similar a la siguiente, listando ambos contenedores, prometheus y node-exporter, con un estado de "Up".

CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS         PORTS                                       NAMES
486db39ca176   prom/prometheus      "/bin/prometheus --c…"   9 seconds ago    Up 8 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   prometheus
3f02110c8fde   prom/node-exporter   "/bin/node_exporter"     11 seconds ago   Up 8 seconds   0.0.0.0:9100->9100/tcp, :::9100->9100/tcp   node-exporter

Esto confirma que su pila de monitorización está lista. En el siguiente paso, accederá a la interfaz de usuario de Prometheus para comenzar a consultar estas métricas.

En este paso, accederá a la interfaz web de Prometheus y localizará el Navegador de Expresiones (Expression Browser), que es la herramienta principal para ejecutar consultas PromQL.

El servidor web del contenedor de Prometheus se ejecuta en el puerto 9090, y el entorno del laboratorio lo hace automáticamente accesible para usted.

  1. Haga clic en el botón + en la interfaz de LabEx y seleccione Web Service.
  2. Introduzca 9090 para el puerto y abra la nueva pestaña que aparezca.

Esta acción abre la interfaz de usuario de Prometheus en una pestaña separada dentro de su entorno de laboratorio. Por defecto, debería aparecer en la página Graph. En esta página, verá un campo de texto etiquetado como Expression. Este es el Navegador de Expresiones, donde introducirá y ejecutará todas sus consultas PromQL para este laboratorio.

Prometheus Expression Browser

Ahora que sabe dónde ejecutar las consultas, está listo para escribir la primera.

Ejecutar Consulta Básica como node_cpu_seconds_total

En este paso, ejecutará su primera consulta PromQL básica para seleccionar una métrica. La consulta más simple en PromQL es solo el nombre de una métrica. Esto seleccionará todas las series temporales que tengan este nombre de métrica.

Navegue al Navegador de Expresiones en la interfaz de usuario de Prometheus que abrió en el paso anterior.

  1. En el campo de entrada Expression, escriba el siguiente nombre de métrica:
node_cpu_seconds_total
  1. Haga clic en el botón Execute.

Después de ejecutar, observe los resultados en la vista Table debajo del gráfico. Verá una lista de series temporales.

node_cpu_seconds_total{cpu="0", instance="node-exporter:9100", job="node", mode="idle"}      3456.78
node_cpu_seconds_total{cpu="0", instance="node-exporter:9100", job="node", mode="iowait"}    12.34
node_cpu_seconds_total{cpu="0", instance="node-exporter:9100", job="node", mode="system"}    56.78
...

Analicemos este resultado:

  • node_cpu_seconds_total: Este es el nombre de la métrica. Representa un counter (contador) que rastrea el número total de segundos que la CPU ha pasado en varios modos.
  • {cpu="0", mode="idle", ...}: Estas son las etiquetas (labels). Las etiquetas son pares clave-valor que identifican de forma única una serie temporal. Aquí, puede ver diferentes series para cada núcleo de CPU (cpu="0") y cada modo (mode="idle", mode="system", etc.).
  • 3456.78: Este es el último valor registrado para esa serie temporal específica. Dado que es un contador, este valor solo aumentará con el tiempo.

Nota: Si no ve el último valor, haga clic en el cuadro de diálogo de Labby en la esquina derecha de la página y ciérrelo temporalmente.

Ha consultado con éxito Prometheus para obtener todas las series temporales de una métrica específica.

Aplicar la Función rate y Filtros de Etiquetas

En este paso, refinará su consulta utilizando filtros de etiquetas y la función rate() para obtener datos más significativos. El valor bruto de un contador a menudo no es útil; generalmente estamos más interesados en su tasa de cambio.

Primero, filtremos los resultados para ver solo el tiempo de CPU dedicado al modo idle. Puede hacer esto agregando un selector de etiquetas entre llaves {} a su consulta.

  1. Introduzca la siguiente consulta en el Navegador de Expresiones y ejecútela:
node_cpu_seconds_total{mode="idle"}

Esta consulta ahora solo devuelve las series temporales donde la etiqueta mode es exactamente idle.

A continuación, calculemos la tasa de cambio por segundo para este contador. Para ello, utilizamos la función rate(). La función rate() necesita saber durante qué período de tiempo calcular la tasa. Especificamos esto con un selector de vector de rango (range vector selector), como [5m] para los últimos 5 minutos.

  1. Ahora, modifique su consulta para envolverla en la función rate() y agregue un selector de rango de 5 minutos. Ejecute la consulta final:
rate(node_cpu_seconds_total{mode="idle"}[5m])

Analicemos esta consulta avanzada:

  • node_cpu_seconds_total{mode="idle"}: Este es el selector de vector instantáneo (instant vector selector) que filtra nuestra métrica y etiqueta deseadas.
  • [5m]: Este es el selector de rango (range selector), que le indica a Prometheus que obtenga todos los puntos de datos de los últimos 5 minutos para las series temporales seleccionadas.
  • rate(...): Esta es la función que toma el rango de datos de 5 minutos y calcula la tasa promedio por segundo a la que aumentó el contador.

El resultado ya no es un valor de contador grande, sino un valor típicamente entre 0 y 1 (para un solo núcleo de CPU). Un valor de 0.95 significaría que durante los últimos 5 minutos, la CPU estuvo, en promedio, un 95% inactiva. Esta es una información mucho más útil para la monitorización.

Resumen

¡Felicitaciones por completar este laboratorio sobre los conceptos básicos de PromQL! Ha consultado con éxito una instancia de Prometheus en vivo y ha transformado datos brutos en información significativa.

En este laboratorio, aprendió a:

  • Navegar por la interfaz de usuario de Prometheus hasta el Navegador de Expresiones (Expression Browser).
  • Ejecutar consultas básicas para seleccionar todas las series temporales de una métrica.
  • Comprender la estructura de una serie temporal, incluido su nombre de métrica y su conjunto único de etiquetas (labels).
  • Filtrar series temporales utilizando selectores de etiquetas ({...}).
  • Calcular la tasa de cambio de un contador utilizando la función rate() y un selector de vector de rango (range vector selector) ([5m]).

Estos son los bloques de construcción fundamentales para trabajar con Prometheus. A partir de aquí, puede explorar las muchas otras funciones y operadores que ofrece PromQL para crear potentes y perspicaces paneles de monitorización y alertas.