Práctica 3 - Consultas PromQL¶
PromQL es el lenguaje de consultas de Prometheus. Permite seleccionar métricas, filtrar series, calcular tasas, agrupar resultados y construir indicadores útiles para dashboards y alertas.
En esta práctica, el alumno trabajará con métricas de Node Exporter y aprenderá a transformar datos básicos en información operativa:
Métricas originales
|
v
Filtros por etiquetas
|
v
Funciones y operadores
|
v
Agregaciones
|
v
Indicadores útiles
|
v
Dashboards y alertas
Las consultas deben ejecutarse únicamente sobre el entorno de laboratorio. Antes de utilizar una consulta en una alerta, es necesario comprobar que devuelve datos correctos, que las unidades son coherentes y que las etiquetas identifican correctamente el recurso supervisado.
Objetivos¶
Al finalizar esta práctica, el alumno podrá:
- Explicar qué es PromQL.
- Diferenciar una métrica de una consulta.
- Ejecutar consultas instantáneas.
- Ejecutar consultas de rango temporal.
- Seleccionar métricas mediante nombres.
- Filtrar series mediante etiquetas.
- Utilizar operadores de igualdad y desigualdad.
- Utilizar expresiones regulares en etiquetas.
- Diferenciar métricas de tipo gauge y counter.
- Utilizar
ratepara calcular tasas. - Utilizar
increasepara calcular incrementos. - Utilizar funciones de agregación.
- Utilizar operadores aritméticos.
- Calcular CPU utilizada.
- Calcular memoria utilizada.
- Calcular almacenamiento utilizado.
- Consultar la disponibilidad de un target.
- Detectar series ausentes.
- Comparar métricas entre instancias.
- Preparar consultas para dashboards.
- Preparar consultas para alertas.
- Diagnosticar consultas sin datos.
- Detectar resultados duplicados.
- Documentar consultas y unidades.
- Validar consultas antes de utilizarlas en producción.
Introducción¶
Prometheus almacena métricas como series temporales.
Cada serie está formada por:
Ejemplo:
El nombre de la métrica es:
Las etiquetas son:
El valor representa la memoria total del servidor.
PromQL permite consultar esa información y convertirla en indicadores más fáciles de interpretar.
Requisitos previos¶
Antes de comenzar, el alumno debe disponer de:
- Prometheus operativo.
- Node Exporter disponible.
- Grafana o la interfaz web de Prometheus.
- Acceso a Explore.
- Una fuente de datos de Prometheus configurada.
- Permisos para ejecutar consultas.
- Un entorno de laboratorio autorizado.
- Un directorio para guardar evidencias.
Registrar:
Alumno:
Grupo:
Fecha:
URL de Prometheus:
URL de Grafana:
Fuente de datos:
Job de Node Exporter:
Instancia:
Entorno:
El entorno utilizado debe ser:
Acceso a PromQL¶
Prometheus¶
Prometheus dispone de una interfaz web donde se pueden ejecutar consultas.
URL habitual:
En la sección de consultas se puede elegir entre:
La disponibilidad exacta de estas opciones depende de la versión instalada.
Grafana Explore¶
En Grafana:
Desde Explore se pueden:
- Ejecutar consultas.
- Cambiar el rango temporal.
- Cambiar la resolución.
- Visualizar tablas.
- Visualizar series temporales.
- Inspeccionar etiquetas.
- Copiar consultas.
- Guardar evidencias.
Conceptos fundamentales¶
Métrica¶
Una métrica es un nombre que representa un dato medido.
Ejemplos:
Serie temporal¶
Una serie temporal es una métrica concreta con un conjunto determinado de etiquetas.
Ejemplo:
Otra instancia genera otra serie:
Etiqueta¶
Una etiqueta proporciona contexto sobre la serie.
Etiquetas habituales:
Selector de etiqueta¶
Permite filtrar series.
Ejemplo:
Consulta instantánea¶
Devuelve el valor más reciente disponible.
Ejemplo:
Consulta de rango¶
Devuelve valores a lo largo de un periodo.
Ejemplo:
Los selectores de rango se utilizan normalmente dentro de funciones como:
Tipos de métricas¶
Gauge¶
Un gauge representa un valor que puede subir o bajar.
Ejemplos:
Un gauge puede consultarse directamente:
Counter¶
Un counter representa un valor acumulativo que normalmente aumenta.
Ejemplos:
Para obtener una tasa a partir de un counter se utilizan funciones como:
o:
Histogram y summary¶
Prometheus también admite histogramas y summaries. No son el objetivo principal de esta práctica, pero pueden aparecer en otros exporters.
Ejemplos de nombres relacionados:
Sintaxis básica de PromQL¶
Consultar una métrica¶
Consultar una métrica concreta¶
Filtrar por una etiqueta¶
Filtrar por varias etiquetas¶
Excluir una etiqueta¶
Utilizar una expresión regular¶
Excluir mediante una expresión regular¶
Sesión 1: consultar métricas básicas¶
Objetivo¶
Comprobar que Prometheus dispone de las métricas principales.
Consultas¶
Actividad¶
Para cada consulta, registrar:
Consulta:
¿Devuelve datos?:
Número de series:
Etiquetas observadas:
Valor aproximado:
Unidad:
Resultado:
Resultado esperado¶
Las consultas deben devolver datos si Node Exporter está correctamente configurado y Prometheus ha realizado al menos un scrape.
Sesión 2: consultar la disponibilidad¶
Objetivo¶
Comprobar el estado de los targets supervisados.
Consulta general¶
Consulta de Node Exporter¶
Interpretación¶
Consultar una instancia concreta¶
Sustituir la instancia por una etiqueta existente en el entorno.
Consultar varios servidores mediante expresión regular¶
Registro¶
Sesión 3: practicar operadores de etiquetas¶
Objetivo¶
Aprender a seleccionar y excluir series mediante etiquetas.
Igualdad¶
Selecciona las series cuyo job es exactamente node_exporter.
Desigualdad¶
Selecciona las series cuyo job no es prometheus.
Expresión regular¶
Selecciona las instancias cuyo nombre empieza por server-.
Expresión regular negativa¶
Excluye las instancias cuyo nombre empieza por server-test-.
Varias etiquetas¶
Actividad¶
Ejecutar las consultas y comparar:
¿Qué series devuelve cada consulta?
¿Qué etiquetas cambian?
¿Qué filtro reduce más el resultado?
¿Qué ocurre si se utiliza una etiqueta inexistente?
Sesión 4: consultar etiquetas disponibles¶
Objetivo¶
Descubrir qué valores de etiquetas existen en las métricas.
Consulta de ejemplo¶
Revisar las etiquetas mostradas en el resultado.
Etiquetas habituales:
Consultar una métrica con etiquetas de CPU¶
Revisar:
Consultar una métrica de almacenamiento¶
Revisar:
Actividad¶
Completar:
| Métrica | Etiqueta | Valores observados |
|---|---|---|
up |
job |
|
up |
instance |
|
node_cpu_seconds_total |
mode |
|
node_filesystem_size_bytes |
fstype |
|
node_filesystem_size_bytes |
mountpoint |
Sesión 5: calcular CPU utilizada¶
Objetivo¶
Transformar el contador de CPU en un porcentaje de uso.
Consulta principal¶
Explicación paso a paso¶
Seleccionar el tiempo de CPU inactiva:
Calcular la tasa media de los últimos cinco minutos:
Agrupar por instancia:
Convertir a porcentaje de tiempo inactivo:
Obtener el porcentaje utilizado:
Consulta por instancia¶
100 - (
avg by (instance) (
rate(node_cpu_seconds_total{
mode="idle",
instance="server-01:9100"
}[5m])
) * 100
)
Consulta por todos los modos¶
Esta consulta ayuda a analizar cuánto tiempo se dedica a cada modo de CPU.
Registro¶
Sesión 6: experimentar con rate¶
Objetivo¶
Comprender cómo cambia el resultado al modificar el periodo de cálculo.
Consultas¶
Actividad¶
Comparar:
¿Con qué periodo fluctúa más el resultado?
¿Con qué periodo es más estable?
¿Qué periodo sería adecuado para un dashboard?
¿Qué periodo sería adecuado para una alerta?
Interpretación¶
- Un periodo corto reacciona antes, pero puede ser más variable.
- Un periodo largo suaviza más los cambios, pero puede retrasar la detección.
- La elección depende del objetivo de la consulta.
Sesión 7: utilizar irate¶
Objetivo¶
Comparar rate e irate.
Consulta con rate¶
Consulta con irate¶
Diferencia general¶
rate:
Calcula una tasa promedio sobre el periodo.
irate:
Utiliza las muestras más recientes y reacciona más rápidamente.
Actividad¶
Representar ambas consultas en un panel de tipo Time series.
Registrar:
Consulta más estable:
Consulta más reactiva:
Diferencia observada:
Consulta preferida para dashboard:
Consulta preferida para alerta:
Justificación:
Sesión 8: calcular memoria utilizada¶
Objetivo¶
Calcular la memoria utilizada en porcentaje.
Memoria total¶
Memoria disponible¶
Memoria utilizada en bytes¶
Memoria utilizada en porcentaje¶
Consulta por instancia¶
100 * (
1 -
node_memory_MemAvailable_bytes{
instance="server-01:9100"
}
/
node_memory_MemTotal_bytes{
instance="server-01:9100"
}
)
Registro¶
Comprobaciones¶
¿La memoria disponible es menor que la total?
¿El porcentaje está entre 0 y 100?
¿Aparece la instancia correcta?
¿Hay valores ausentes?
¿El resultado es coherente con el sistema?
Sesión 9: calcular almacenamiento utilizado¶
Objetivo¶
Calcular el porcentaje ocupado de un sistema de ficheros.
Tamaño total¶
Espacio disponible¶
Porcentaje utilizado¶
100 * (
1 -
node_filesystem_avail_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
)
Agrupar por instancia y punto de montaje¶
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
El resultado conserva las etiquetas del sistema de ficheros, como:
Registro¶
Instancia:
Punto de montaje:
Sistema de ficheros:
Tamaño:
Disponible:
Porcentaje utilizado:
Resultado:
Sesión 10: excluir sistemas de ficheros irrelevantes¶
Objetivo¶
Evitar que las consultas incluyan sistemas de ficheros temporales o virtuales.
Consultar todos los sistemas¶
Excluir tipos concretos¶
Excluir puntos de montaje¶
Combinar filtros¶
Actividad¶
Comparar el número de series:
Consulta sin filtros:
Consulta con fstype:
Consulta con mountpoint:
Consulta con ambos filtros:
Diferencia:
Sesión 11: practicar funciones de agregación¶
Objetivo¶
Agrupar series y reducir la cantidad de resultados.
sum¶
Sumar valores:
Sumar por instancia:
avg¶
Calcular el promedio:
Promedio por instancia:
min¶
Obtener el valor mínimo:
max¶
Obtener el valor máximo:
count¶
Contar series:
Actividad¶
Ejecutar las consultas y documentar:
Sesión 12: utilizar by y without¶
Objetivo¶
Comprender cómo se conservan o eliminan etiquetas al agregar series.
Agrupar por instancia¶
Agrupar por instancia y modo¶
Eliminar una etiqueta concreta¶
Actividad¶
Comparar:
¿Qué etiquetas aparecen con by(instance)?
¿Qué etiquetas desaparecen con without(cpu)?
¿Cuál es adecuada para un panel por instancia?
¿Cuál es adecuada para un análisis detallado?
Sesión 13: practicar operadores aritméticos¶
Objetivo¶
Utilizar operaciones matemáticas en PromQL.
Suma¶
Resta¶
Multiplicación¶
División¶
Porcentaje¶
Comparación¶
Comparación con filtro¶
Registro¶
Sesión 14: consultar carga del sistema¶
Objetivo¶
Consultar la carga del sistema mediante las métricas de Node Exporter.
Carga de un minuto¶
Carga de cinco minutos¶
Carga de quince minutos¶
Comparar con el número de CPU¶
Esta consulta ofrece una relación aproximada entre la carga de un minuto y el número de CPUs.
Actividad¶
Registrar:
Carga de un minuto:
Carga de cinco minutos:
Carga de quince minutos:
Número de CPUs:
Relación carga/CPU:
Interpretación:
La carga del sistema no debe interpretarse como un porcentaje de CPU sin tener en cuenta el número de procesadores y el tipo de trabajo.
Sesión 15: consultar información del sistema¶
Objetivo¶
Obtener información sobre el sistema operativo y el kernel.
Consulta¶
Revisar etiquetas¶
Según la versión y el entorno, pueden aparecer:
Información de compilación de Node Exporter¶
Actividad¶
Completar:
Nombre del host:
Sistema operativo:
Versión del kernel:
Arquitectura:
Versión de Node Exporter:
Resultado:
Sesión 16: consultar métricas de red¶
Objetivo¶
Identificar las métricas de tráfico de red.
Bytes recibidos¶
Bytes transmitidos¶
Tasa de recepción¶
Tasa de transmisión¶
Excluir la interfaz de loopback¶
Agrupar por instancia y dispositivo¶
Registro¶
Sesión 17: utilizar increase¶
Objetivo¶
Calcular cuánto ha aumentado un contador durante un periodo.
Incremento de CPU¶
Incremento de bytes recibidos¶
Diferencia con rate¶
Actividad¶
Comparar:
Registrar:
Sesión 18: detectar condiciones con comparaciones¶
Objetivo¶
Crear consultas que indiquen si un valor supera un umbral.
CPU superior al 90 %¶
Memoria superior al 90 %¶
Almacenamiento superior al 80 %¶
(
100 * (
1 -
node_filesystem_avail_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
)
) > 80
Actividad¶
Registrar:
Consideración¶
Una consulta que devuelve una serie cuando se cumple una condición puede utilizarse como base de una alerta. Antes de crear la alerta se debe definir también la duración y el comportamiento ante ausencia de datos.
Sesión 19: utilizar absent¶
Objetivo¶
Detectar la ausencia total de una métrica o serie.
Ejemplo¶
Interpretación:
Comprobar una instancia concreta¶
Actividad¶
- Ejecutar la consulta con una instancia existente.
- Ejecutar la consulta con una instancia inventada.
- Comparar los resultados.
- Documentar la interpretación.
Registro¶
Advertencia¶
absent detecta ausencia de series, pero no sustituye siempre a la métrica up. Para comprobar la disponibilidad de un target, normalmente es más claro utilizar:
Sesión 20: utilizar absent_over_time¶
Objetivo¶
Detectar si no existen muestras durante un periodo.
Consulta¶
Interpretación¶
Actividad¶
Registrar:
Sesión 21: utilizar funciones temporales¶
Objetivo¶
Analizar cambios recientes en una métrica.
Valor actual¶
Valor máximo en una hora¶
Valor mínimo en una hora¶
Promedio en una hora¶
Último valor disponible¶
Actividad¶
Comparar:
Sesión 22: practicar consultas por instancia¶
Objetivo¶
Construir consultas que funcionen con una o varias instancias.
CPU por instancia¶
Memoria por instancia¶
Disponibilidad por instancia¶
Filtrar una instancia¶
Actividad¶
Completar:
Número de instancias disponibles:
Instancia con mayor CPU:
Instancia con mayor memoria:
Instancia con mayor almacenamiento:
Instancias no disponibles:
Resultado:
Sesión 23: detectar resultados duplicados¶
Situación¶
Una consulta devuelve varias series cuando se esperaba una sola.
Ejemplo¶
Puede devolver varias series si existen diferentes tipos de sistema de ficheros o etiquetas adicionales.
Revisar etiquetas¶
Examinar:
Filtrar con más precisión¶
Actividad¶
Comparar:
Posible solución¶
Utilizar filtros adecuados o una agregación:
max by (instance, mountpoint) (
node_filesystem_size_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
)
La agregación debe utilizarse solo después de comprender por qué existen varias series.
Sesión 24: construir consultas para dashboards¶
Objetivo¶
Preparar consultas con unidades y etiquetas adecuadas para paneles.
Panel de disponibilidad¶
Configuración recomendada:
Panel de CPU¶
Configuración recomendada:
Panel de memoria¶
Configuración recomendada:
Panel de almacenamiento¶
100 * (
1 -
node_filesystem_avail_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
)
Configuración recomendada:
Sesión 25: construir consultas para alertas¶
Objetivo¶
Preparar consultas que puedan utilizarse en reglas de alerta.
Disponibilidad¶
Condición:
CPU¶
Condición:
Memoria¶
Condición:
Almacenamiento¶
100 * (
1 -
node_filesystem_avail_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
)
Condición:
Registro¶
Sesión 26: añadir filtros de laboratorio¶
Objetivo¶
Limitar las consultas al entorno de prácticas.
Si las métricas incluyen la etiqueta environment, utilizar:
CPU:
100 - (
avg by (instance) (
rate(node_cpu_seconds_total{
mode="idle",
environment="laboratory"
}[5m])
) * 100
)
Consideración¶
No todas las instalaciones de Node Exporter añaden automáticamente la etiqueta environment. Puede añadirse desde la configuración de Prometheus mediante etiquetas estáticas.
Ejemplo:
Sesión 27: utilizar consultas en Grafana¶
Objetivo¶
Comprobar que las consultas funcionan tanto en Prometheus como en Grafana.
Procedimiento¶
- Ejecutar la consulta en Prometheus.
- Registrar el resultado.
- Abrir Grafana Explore.
- Seleccionar Prometheus.
- Ejecutar la misma consulta.
- Comparar los resultados.
- Crear un panel temporal.
- Guardar la evidencia.
Consultas de comparación¶
Registro¶
Consulta:
Resultado en Prometheus:
Resultado en Grafana:
Diferencias:
Causa de las diferencias:
Conclusión:
Sesión 28: diagnosticar una consulta sin datos¶
Situación¶
Procedimiento¶
- Comprobar el nombre de la métrica.
- Consultar la métrica sin filtros.
- Revisar el nombre del job.
- Revisar la etiqueta
instance. - Comprobar el rango temporal.
- Comprobar que Prometheus ha realizado scrapes.
- Revisar la página de targets.
- Revisar la fuente de datos de Grafana.
- Ejecutar una consulta simple como
up. - Registrar la causa.
Ejemplo de diagnóstico¶
Consulta problemática:
Consulta corregida:
La diferencia está en el nombre exacto del job.
Registro¶
Consulta original:
Resultado:
Métrica sin filtros:
Job observado:
Etiqueta incorrecta:
Consulta corregida:
Resultado final:
Sesión 29: diagnosticar una consulta con valores extraños¶
Situación¶
Posibles causas¶
Se ha utilizado una métrica incorrecta.
Se ha interpretado un counter como gauge.
Falta una multiplicación por 100.
Se ha invertido una división.
La consulta mezcla series incompatibles.
Las etiquetas no coinciden.
Se ha elegido una unidad incorrecta en Grafana.
Actividad¶
Revisar la consulta:
Esta consulta devuelve una proporción entre 0 y 1.
Para convertirla en porcentaje:
Para calcular memoria utilizada:
Registro¶
Sesión 30: guardar las consultas¶
Objetivo¶
Documentar las consultas realizadas durante la práctica.
Crear un directorio:
Crear un fichero:
cat > ~/proyecto-final-grafana/evidencias/promql/consultas-practica-3.md <<'EOF'
# Consultas PromQL - Práctica 3
## Disponibilidad
```promql
up{job="node_exporter"}
CPU utilizada¶
Memoria utilizada¶
Almacenamiento utilizado¶
100 * (
1 -
node_filesystem_avail_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
)
Carga de un minuto¶
Tráfico recibido¶
Observaciones¶
Consulta:
Finalidad:
Unidad:
Etiquetas:
Resultado: EOF
## Sesión 31: preparar una línea temporal de métricas
### Objetivo
Analizar cómo evolucionan las métricas durante un periodo.
### Consultas
CPU:
```promql
100 - (
avg by (instance) (
rate(node_cpu_seconds_total{mode="idle"}[5m])
) * 100
)
Memoria:
Carga:
Procedimiento¶
- Seleccionar un rango de treinta minutos.
- Ejecutar cada consulta como serie temporal.
- Identificar valores máximos.
- Identificar valores mínimos.
- Comparar las tendencias.
- Registrar cualquier evento conocido.
- Añadir una anotación si procede.
Registro¶
Sesión 32: comparar dos instancias¶
Objetivo¶
Comparar el comportamiento de dos servidores de laboratorio.
CPU por instancia¶
Memoria por instancia¶
Actividad¶
Registrar:
Instancia con mayor CPU:
Instancia con menor CPU:
Instancia con mayor memoria:
Instancia con menor memoria:
¿Alguna supera los umbrales?:
Conclusión:
Sesión 33: diseñar una consulta para un dashboard¶
Objetivo¶
Convertir una necesidad operativa en una consulta PromQL.
Necesidad¶
Razonamiento¶
- Seleccionar la métrica de CPU.
- Filtrar el modo
idle. - Calcular la tasa.
- Agrupar por
instance. - Convertir a porcentaje utilizado.
Consulta resultante¶
Actividad¶
Diseñar consultas para:
Mostrar la memoria utilizada por instancia.
Mostrar el almacenamiento utilizado en /.
Mostrar si Node Exporter está disponible.
Mostrar la tasa de tráfico recibido por interfaz.
Registro¶
Necesidad:
Métrica inicial:
Filtros:
Funciones:
Agregación:
Consulta final:
Unidad:
Visualización recomendada:
Sesión 34: diseñar una consulta para una alerta¶
Objetivo¶
Convertir un requisito de monitorización en una consulta evaluable.
Requisito¶
Consulta¶
Condición¶
Duración propuesta¶
Etiquetas¶
alertname = HighMemoryUsage-Laboratory
severity = warning
team = systems
service = node_exporter
environment = laboratory
resource = memory
Actividad¶
Diseñar el mismo esquema para:
Registro de consultas¶
Para cada consulta, utilizar esta plantilla:
Nombre:
Necesidad operativa:
Consulta:
Tipo de métrica:
Funciones utilizadas:
Filtros:
Agregaciones:
Unidad:
Número esperado de series:
Resultado observado:
Uso previsto:
Observaciones:
Ejemplo completo¶
Necesidad¶
Métrica original¶
Filtro¶
Tasa¶
Agregación¶
Conversión a porcentaje inactivo¶
Conversión a porcentaje utilizado¶
Resultado documentado¶
La consulta calcula la tasa media de CPU inactiva durante cinco minutos,
la agrupa por instancia y resta el porcentaje inactivo a 100 para obtener
una aproximación del porcentaje de CPU utilizada.
Errores frecuentes¶
Confundir un counter con un gauge¶
Incorrecto para calcular CPU utilizada:
La métrica es acumulativa. Para obtener una tasa, utilizar:
Utilizar una etiqueta incorrecta¶
Incorrecto:
si el job real es:
Correcto:
Olvidar el filtro mode="idle"¶
Una consulta que mezcla todos los modos de CPU no representa directamente la CPU inactiva:
Para calcular CPU utilizada mediante tiempo inactivo:
Olvidar la multiplicación por 100¶
Esta consulta devuelve una proporción:
Para mostrar un porcentaje:
No agrupar las series¶
Una consulta de CPU sin agregación puede devolver una serie por CPU lógica:
Para obtener un resultado por instancia:
No filtrar sistemas de ficheros¶
Consultar todos los sistemas de ficheros puede producir resultados duplicados o poco útiles.
Utilizar filtros:
Criterios de aceptación¶
La práctica se considera completada cuando:
- El alumno puede acceder a Prometheus o Grafana Explore.
- Las consultas básicas devuelven datos.
- El alumno puede filtrar por etiquetas.
- El alumno comprende
rate. - El alumno puede calcular CPU utilizada.
- El alumno puede calcular memoria utilizada.
- El alumno puede calcular almacenamiento utilizado.
- El alumno puede utilizar agregaciones.
- El alumno puede interpretar unidades.
- El alumno puede detectar una consulta sin datos.
- El alumno puede identificar resultados duplicados.
- Las consultas están documentadas.
- Las consultas se han validado en el entorno de laboratorio.
- Las evidencias están organizadas.
- No se han incluido credenciales.
- El alumno puede explicar la finalidad de cada consulta.
Puntos clave¶
- PromQL es el lenguaje de consulta de Prometheus.
- Una serie temporal está formada por una métrica, etiquetas, valores y marcas de tiempo.
- Las etiquetas permiten filtrar y clasificar series.
uppermite consultar la disponibilidad de un target.- Los gauges pueden subir y bajar libremente.
- Los counters representan valores acumulativos.
ratecalcula una tasa media a partir de un counter.iratereacciona más rápidamente a los cambios recientes.increasecalcula el incremento total durante un periodo.sum,avg,min,maxycountpermiten agregar series.byconserva las etiquetas indicadas.withoutelimina las etiquetas indicadas durante la agregación.- Las consultas deben producir unidades comprensibles.
- CPU, memoria y almacenamiento requieren transformaciones para expresarse como porcentajes.
- Las consultas de almacenamiento deben filtrar sistemas de ficheros irrelevantes.
- Una consulta sin datos puede indicar un problema de métrica, etiqueta, target o rango temporal.
- Una consulta con resultados duplicados puede necesitar filtros o agregaciones.
- Las consultas de dashboards y alertas deben validarse antes de guardarse.
- La duración de una alerta no forma parte de PromQL, sino de la configuración de la regla.
- La documentación debe incluir finalidad, consulta, unidad y resultado.
Preguntas de comprobación¶
- ¿Qué es PromQL?
- ¿Qué elementos forman una serie temporal?
- ¿Qué función cumplen las etiquetas?
- ¿Qué diferencia existe entre una consulta instantánea y una consulta de rango?
- ¿Qué diferencia existe entre un gauge y un counter?
- ¿Por qué se utiliza
rateconnode_cpu_seconds_total? - ¿Qué representa el modo
idlede la métrica de CPU? - ¿Cómo se calcula el porcentaje de CPU utilizada?
- ¿Cómo se calcula el porcentaje de memoria utilizada?
- ¿Por qué se utiliza
mountpoint="/"en la consulta de almacenamiento? - ¿Por qué se excluyen
tmpfsyoverlay? - ¿Qué diferencia existe entre
rateeirate? - ¿Qué diferencia existe entre
rateeincrease? - ¿Qué función cumple
avg by (instance)? - ¿Qué diferencia existe entre
byywithout? - ¿Qué ocurre si se utiliza una etiqueta que no existe?
- ¿Qué revisarías si una consulta no devuelve datos?
- ¿Qué revisarías si una consulta devuelve demasiadas series?
- ¿Qué función cumple
absent? - ¿Qué diferencia existe entre una consulta para dashboard y una consulta para alerta?
- ¿Qué información debe documentarse para cada consulta?
- ¿Por qué debe validarse una consulta antes de crear una alerta?
- ¿Qué errores pueden producir valores superiores a 100?
- ¿Qué consulta utilizarías para comprobar que Node Exporter está disponible?
- ¿Qué resultado demostraría que la práctica se ha completado?
Resultado esperado¶
Al finalizar la práctica, el alumno deberá haber creado y validado un conjunto de consultas PromQL para analizar el entorno de laboratorio.
Consultas mínimas:
Disponibilidad¶
CPU utilizada¶
Memoria utilizada¶
Almacenamiento utilizado¶
100 * (
1 -
node_filesystem_avail_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
)
El flujo completado será:
Acceder a Prometheus o Grafana
|
v
Consultar métricas básicas
|
v
Revisar etiquetas
|
v
Filtrar series
|
v
Aplicar funciones
|
v
Agrupar resultados
|
v
Calcular indicadores
|
v
Validar unidades
|
v
Preparar consultas para dashboards
|
v
Preparar consultas para alertas
|
v
Diagnosticar errores
|
v
Guardar evidencias
|
v
Documentar el resultado
El alumno debe poder explicar qué hace cada parte de una consulta, qué unidad devuelve, qué etiquetas conserva y cómo se utilizaría en un dashboard o una regla de alerta.
Estas consultas constituirán la base técnica para la siguiente práctica, dedicada a la creación de un dashboard operativo con variables, filtros, paneles y umbrales visuales.