Introducción
Ahora que Prometheus recopila métricas de Node Exporter, puede empezar a hacer preguntas sobre esos datos.
Prometheus tiene su propio lenguaje de consulta, llamado PromQL (Prometheus Query Language).
PromQL es importante porque las métricas sin procesar solo resultan útiles cuando puede filtrarlas, combinarlas y calcular respuestas significativas a partir de ellas.
Este es el punto en el que la monitorización se convierte en análisis, en lugar de limitarse a la recopilación. Prometheus no es útil únicamente porque almacena números, sino porque PromQL permite convertir esos números en preguntas y respuestas.
En este laboratorio formulará tres tipos de preguntas:
- Dato simple: «¿Cuánta memoria libre hay?»
- Tasa: «¿A qué velocidad está trabajando la CPU?»
- Cálculo matemático: «¿Qué porcentaje de la memoria está ocupado?»
Usará la interfaz web de Prometheus (Web Service) para escribir estas preguntas y ver las respuestas.
Consultar la memoria libre
En este paso, consultará la cantidad de bytes de memoria libre y guardará la respuesta.
Comencemos con un dato sencillo. Queremos saber cuánta memoria (RAM) está libre.
Para empezar, abra la interfaz de Prometheus:
Haga clic en la pestaña Prometheus del menú superior izquierdo de la interfaz de LabEx para abrir el panel.
Cuando se cargue la interfaz, localice la barra de búsqueda principal. Ahí escribirá sus preguntas para el bibliotecario.
Introduzca la siguiente consulta en la barra de búsqueda:
node_memory_MemFree_bytes
Este texto es el nombre del punto de datos que representa la «memoria libre». Después de escribirlo, haga clic en el botón Execute.

Observe el resultado:
Debería aparecer un número en la columna «Value». Puede parecer sorprendentemente grande, por ejemplo, 5204746240. Es normal, porque los equipos cuentan la memoria en Bytes, que son unidades muy pequeñas.
Nota: En ocasiones, la ventana de chat de Labby puede ocultar el número de la columna «Value». Si no puede ver el valor, cierre temporalmente el cuadro de diálogo de Labby para consultar el número y vuelva a abrirlo cuando termine.
Para verificar que obtuvo el resultado correcto (ya que no podemos ver su pantalla), ejecute este comando en el terminal para guardar la respuesta en un archivo:
curl "http://localhost:9090/api/v1/query?query=node_memory_MemFree_bytes" > ~/project/free_memory.json
cat ~/project/free_memory.json
{"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"node_memory_MemFree_bytes","instance":"localhost:9100","job":"node_exporter"},"value":[1768698428.127,"4001128448"]}]}}
Consultar la tasa de CPU
En este paso, utilizará rate() para consultar la velocidad a la que aumenta un contador de CPU.
Ahora abordaremos una pregunta más difícil.
El velocímetro de un automóvil no muestra el «total de kilómetros recorridos», sino los «kilómetros por hora» (la velocidad).
El uso de la CPU es similar. Prometheus registra los «segundos totales durante los que la CPU ha trabajado desde que se encendió». Este número solo aumenta.
Las métricas de este tipo se llaman contadores: acumulan valores con el tiempo. Para comprender el comportamiento actual, a menudo necesita una función como rate(), que convierte el crecimiento acumulado en una señal por unidad de tiempo.
Para saber «¿Con qué intensidad está trabajando la CPU ahora mismo?», debemos calcular la tasa (la velocidad).
La pregunta:
rate(node_cpu_seconds_total[1m])
Desglose:
node_cpu_seconds_total: los datos sin procesar (segundos totales).[1m]: «Observe los datos del último minuto».rate(...): «Calcule a qué velocidad aumentó este número durante ese minuto».
Pruébelo en la interfaz web:
Pegue la consulta rate(node_cpu_seconds_total[1m]) en la barra de búsqueda y haga clic en Execute. Probablemente verá muchas filas de números, porque su equipo tiene varios núcleos de CPU.
Guarde la respuesta (para verificarla):
curl -g "http://localhost:9090/api/v1/query?query=rate(node_cpu_seconds_total[1m])" > ~/project/cpu_rate.json
La opción -g (--globoff) desactiva la expansión de patrones de URL de curl, de modo que curl envía los corchetes literales de [1m] en lugar de interpretarlos como un intervalo de URL. Las comillas del shell mantienen unida la URL completa de la consulta.
Calcular porcentajes
En este paso, combinará métricas de memoria para obtener un porcentaje.
«500 millones de bytes libres» es difícil de interpretar. «50 % libre» es fácil de entender.
Prometheus puede hacer los cálculos por usted.
Esta capacidad aritmética es lo que hace que PromQL sea potente para las operaciones. Puede combinar varias métricas de bajo nivel para obtener indicadores de estado de nivel superior, más fáciles de interpretar para las personas.
Queremos saber: ¿Qué porcentaje de la memoria está EN USO?
La fórmula es: $$ \text{Porcentaje de uso} = \frac{\text{Memoria total} - \text{Memoria libre}}{\text{Memoria total}} \times 100 $$
La pregunta de PromQL:
(node_memory_MemTotal_bytes - node_memory_MemFree_bytes) / node_memory_MemTotal_bytes * 100
Pruébela en la interfaz web:
Pegue esa ecuación matemática larga en la barra de búsqueda y haga clic en Execute. Debería ver un único número, por ejemplo, 45.2. Eso significa que el 45,2 % de la memoria está en uso.
Guarde la respuesta:
curl "http://localhost:9090/api/v1/query?query=(node_memory_MemTotal_bytes-node_memory_MemFree_bytes)/node_memory_MemTotal_bytes*100" > ~/project/memory_usage.json
Visualizar los datos
En este paso, representará gráficamente la consulta de memoria e interpretará sus ejes.
Por último, las imágenes se entienden mejor que los números.
Con la pregunta matemática todavía en la barra de búsqueda, busque las pestañas situadas encima del área de resultados. Verá una pestaña Graph (normalmente junto a la pestaña Table, que se usa para mostrar resultados de texto sencillos).
Haga clic en la pestaña Graph. Verá una línea que representa el uso de la memoria a lo largo del tiempo.
- Eje X: tiempo
- Eje Y: porcentaje de uso
Si ve una línea recta, significa que el uso de la memoria es estable. Si ejecutara un programa pesado, vería un pico.
Una última comprobación:
Como solo está observando gráficos, confirmemos que el servidor sigue ejecutándose en segundo plano:
ps aux | grep prometheus
Resumen
En este laboratorio aprendió a hacer preguntas al bibliotecario mediante PromQL.
Aprendió lo siguiente:
- Datos simples:
node_memory_MemFree_bytes - Tasas (velocidad):
rate(... [1m]) - Cálculos matemáticos:
(Total - Free) / Total * 100 - Representación gráfica: uso de la pestaña Graph.
Ahora que puede ver los datos, el siguiente paso es conseguir que Prometheus le avise a gritos si algo sale mal. Eso se llama Alerting.



