Panel Bar Gauge¶
El panel Bar Gauge de Grafana permite comparar visualmente varios valores mediante barras horizontales o verticales.
Es especialmente útil cuando una consulta devuelve varias series y se necesita identificar rápidamente:
- Qué servidor consume más CPU.
- Qué instancia utiliza más memoria.
- Qué sistema de ficheros está más lleno.
- Qué interfaz genera más tráfico.
- Qué servicio presenta una mayor latencia.
- Qué objetivos tienen valores diferentes.
Mientras que un panel Gauge suele centrarse en un valor individual, el Bar Gauge está diseñado para mostrar varios valores dentro de una misma visualización.
Objetivos¶
Al finalizar esta sección, el alumno podrá:
- Explicar la finalidad del panel Bar Gauge.
- Diferenciar un Bar Gauge de un Gauge, Stat y Time series.
- Crear un panel Bar Gauge desde cero.
- Comparar varias series en un mismo panel.
- Utilizar consultas PromQL agrupadas por instancia.
- Configurar orientación horizontal o vertical.
- Configurar unidades, decimales y límites.
- Configurar umbrales y colores.
- Ordenar las barras.
- Mostrar etiquetas comprensibles.
- Filtrar interfaces y sistemas de ficheros.
- Comparar el uso de CPU entre instancias.
- Comparar el uso de memoria entre servidores.
- Comparar el espacio utilizado por punto de montaje.
- Diagnosticar un Bar Gauge sin datos.
- Identificar problemas provocados por demasiadas series.
- Integrar un Bar Gauge en un dashboard operativo.
Introducción¶
El panel Bar Gauge transforma cada serie devuelta por una consulta en una barra.
El flujo general es:
Métricas de Prometheus
|
v
Consulta PromQL
|
v
Varias series
|
v
Una barra por serie
|
v
Ordenación, unidades y umbrales
|
v
Panel Bar Gauge
Por ejemplo, una consulta de CPU puede devolver:
El Bar Gauge puede representarlo así:
server-01:9100 ███████░░░░░░░░░░░░░░░░░░░ 35.4 %
server-02:9100 ███████████████░░░░░░░░░░░░ 78.2 %
server-03:9100 ██████████████████░░░░░░░░░ 91.7 %
Esta representación permite identificar rápidamente el valor más alto y el más bajo.
Cuándo utilizar un Bar Gauge¶
El Bar Gauge es apropiado cuando:
- Se desean comparar varias series.
- Cada serie representa una instancia, interfaz o recurso.
- Existe un rango común para todos los valores.
- Se necesita identificar valores altos o bajos.
- La consulta devuelve una cantidad moderada de series.
- Los umbrales son aplicables a todas las series.
Ejemplos adecuados¶
CPU por instancia¶
Memoria por instancia¶
Uso de sistemas de ficheros¶
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
Tráfico recibido por instancia¶
Cuándo no utilizar un Bar Gauge¶
No suele ser la mejor opción cuando se necesita:
- Analizar una tendencia temporal.
- Mostrar cientos de series.
- Consultar etiquetas detalladas.
- Representar una única métrica sin comparación.
- Mostrar una distribución estadística.
- Analizar picos ocurridos durante un periodo largo.
En esos casos pueden ser más adecuadas otras visualizaciones:
| Necesidad | Visualización recomendada |
|---|---|
| Un único valor | Stat |
| Un valor frente a un rango | Gauge |
| Evolución temporal | Time series |
| Muchas etiquetas y valores | Table |
| Distribución de valores | Heatmap |
| Documentación | Text |
Diferencia entre Bar Gauge y Gauge¶
Ambos paneles utilizan barras o escalas, pero su propósito principal es diferente.
| Característica | Gauge | Bar Gauge |
|---|---|---|
| Valor individual | Muy adecuado | Posible |
| Comparación de varias series | Limitada | Muy adecuada |
| Vista resumida | Sí | Sí |
| Barra por valor | Normalmente una | Una por cada serie |
| CPU por servidor | Menos adecuado | Muy adecuado |
| Memoria de un servidor | Adecuado | Posible |
| Uso de disco por servidor | Limitado | Muy adecuado |
| Identificación del valor máximo | Menos directa | Muy clara |
Ejemplo¶
Para mostrar la memoria de un único servidor:
Para comparar la memoria de varios servidores:
Diferencia entre Bar Gauge y Stat¶
El panel Stat resume una métrica en un valor principal.
El Bar Gauge conserva la comparación entre varias series.
Stat¶
Consulta:
Resultado:
Pregunta que responde:
Bar Gauge¶
Consulta:
Resultado:
Pregunta que responde:
Diferencia entre Bar Gauge y Time series¶
El Bar Gauge muestra una comparación actual o reducida.
El Time series muestra la evolución temporal.
Bar Gauge¶
Útil para:
Time series¶
Útil para:
Una combinación habitual es:
Anatomía de un panel Bar Gauge¶
Un Bar Gauge puede tener una estructura similar a esta:
+------------------------------------------------------+
| Uso de CPU por instancia |
+------------------------------------------------------+
| server-03:9100 ████████████████████░░░░ 91.7 % |
| server-02:9100 ████████████████░░░░░░░░ 78.2 % |
| server-01:9100 ███████░░░░░░░░░░░░░░░░░░ 35.4 % |
+------------------------------------------------------+
Serie¶
Cada barra corresponde a una serie devuelta por la consulta.
Ejemplos:
- Una instancia.
- Una interfaz.
- Un punto de montaje.
- Un job.
- Un servicio.
Nombre de la serie¶
Debe permitir identificar el elemento representado.
Ejemplo:
Valor¶
Es el resultado actual o reducido de la serie.
Ejemplo:
Unidad¶
Aclara cómo debe interpretarse el valor.
Ejemplos:
Escala¶
Define el rango común de las barras.
Para porcentajes:
Umbrales¶
Permiten utilizar colores según el valor.
Ejemplo:
Orden¶
Las barras pueden ordenarse:
- Ascendente.
- Descendente.
- Por nombre.
- Por valor actual.
- Por valor máximo.
- Por valor mínimo.
Para localizar rápidamente el recurso más utilizado, el orden descendente suele ser útil.
Crear un panel Bar Gauge¶
Procedimiento general¶
- Acceder a Grafana.
- Abrir un dashboard.
- Añadir un panel.
- Seleccionar Prometheus.
- Introducir una consulta que devuelva varias series.
- Seleccionar la visualización
Bar Gauge. - Configurar la orientación.
- Configurar la unidad.
- Configurar el mínimo y el máximo.
- Configurar los umbrales.
- Configurar el orden.
- Configurar los nombres de las series.
- Revisar el resultado.
- Guardar el panel.
- Guardar el dashboard.
Consulta inicial recomendada¶
Para comparar CPU por instancia:
Configuración recomendada:
Título: Uso de CPU por instancia
Visualización: Bar Gauge
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Orden: Descendente por valor
Consultas PromQL para Bar Gauge¶
Uso de CPU por instancia¶
Cada barra representa una instancia.
Uso de CPU por job¶
Cada barra representa un job.
Memoria utilizada por instancia¶
Si existe más de una instancia, Grafana puede mostrar una barra por instancia.
Memoria disponible por instancia¶
Uso del sistema de ficheros por punto de montaje¶
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
Uso del sistema de ficheros raíz por instancia¶
100 * (
1 -
node_filesystem_avail_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
mountpoint="/",
fstype!~"tmpfs|overlay"
}
)
Tráfico recibido por instancia¶
Tráfico enviado por instancia¶
Tráfico recibido por interfaz¶
Carga media por instancia¶
Agrupaciones en PromQL¶
La agrupación determina qué representa cada barra.
Agrupar por instancia¶
Resultado conceptual:
Agrupar por interfaz¶
Resultado conceptual:
Agrupar por job¶
Resultado conceptual:
Agrupar por instancia y punto de montaje¶
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
Si se desea controlar explícitamente la agregación:
max by (instance, mountpoint) (
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
)
Configurar orientación¶
El Bar Gauge puede utilizar diferentes orientaciones según el diseño del dashboard.
Orientación horizontal¶
Es adecuada cuando:
- Los nombres de las series son largos.
- Se desea mostrar el nombre a la izquierda.
- El panel ocupa un espacio ancho.
- Se comparan servidores.
Ejemplo:
Orientación vertical¶
Es adecuada cuando:
- El panel es estrecho y alto.
- Los nombres son cortos.
- Se desea crear una fila de indicadores.
- Se comparan pocas series.
Ejemplo conceptual:
Recomendación¶
Utilizar orientación horizontal cuando los nombres de las instancias, interfaces o puntos de montaje sean largos.
Configurar unidades¶
CPU por instancia¶
Consulta:
Unidad:
Memoria por instancia¶
Consulta:
Unidad:
Almacenamiento¶
Consulta:
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
Unidad:
Tráfico de red¶
Consulta:
Unidad:
Memoria disponible en bytes¶
Consulta:
Unidad:
Temperatura¶
Consulta:
Unidad:
Configurar límites¶
Los límites deben ser compatibles con la consulta.
Porcentajes¶
Aplicable a:
- CPU.
- Memoria.
- Almacenamiento.
- Disponibilidad.
- Porcentaje de errores.
Tráfico de red¶
Para tráfico de red, puede ser preferible utilizar:
o establecer un máximo conocido según el enlace.
Carga del sistema¶
La carga no debe configurarse automáticamente como porcentaje.
Utilizar:
Configurar umbrales¶
CPU por servidor¶
Memoria por servidor¶
Almacenamiento por punto de montaje¶
Tráfico de red¶
Los umbrales de tráfico dependen de:
- Capacidad del enlace.
- Tipo de interfaz.
- Ancho de banda contratado.
- Tráfico normal.
- Horario.
- Aplicación.
- Entorno.
No es recomendable utilizar automáticamente los mismos umbrales que para CPU y memoria.
Disponibilidad¶
Ordenar las barras¶
El orden debe facilitar la interpretación.
Orden descendente por valor¶
Adecuado para detectar los valores más altos:
Orden ascendente por valor¶
Adecuado para detectar los valores más bajos:
Orden alfabético¶
Adecuado cuando se necesita localizar una instancia concreta:
Recomendación¶
Para dashboards operativos, el orden descendente suele ser el más útil cuando se monitorizan consumos.
Configurar nombres de series¶
Una consulta puede generar nombres largos.
Ejemplo:
Puede ser más legible mostrar solo:
o:
Nombres por instancia¶
Consulta agrupada:
Nombre recomendado:
Nombres por interfaz¶
Consulta:
Nombre recomendado:
Nombres por punto de montaje¶
Consulta:
max by (instance, mountpoint) (
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
)
Nombre recomendado:
Controlar demasiadas series¶
Un Bar Gauge funciona mejor con un número moderado de barras.
Si la consulta devuelve demasiadas series, aplicar filtros o agregaciones.
Filtrar una instancia¶
100 - (
avg by (instance) (
rate(node_cpu_seconds_total{
mode="idle",
instance="localhost:9100"
}[5m])
) * 100
)
Filtrar interfaces¶
Excluir interfaces¶
sum by (device) (
rate(node_network_receive_bytes_total{
device!="lo",
device!~"docker.*|veth.*"
}[5m])
)
Mostrar los cinco valores más altos¶
PromQL permite utilizar:
Mostrar los cinco valores más bajos¶
Ejemplo completo 1: CPU por instancia¶
Objetivo¶
Comparar el porcentaje de CPU utilizado por varias instancias.
Consulta¶
Configuración¶
Título: Uso de CPU por instancia
Visualización: Bar Gauge
Orientación: Horizontal
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Decimales: 1
Orden: Descendente por valor
Umbrales¶
Descripción¶
Porcentaje medio de CPU utilizada por instancia durante los últimos cinco minutos.
Las barras se ordenan de mayor a menor consumo.
Ejemplo completo 2: memoria por instancia¶
Objetivo¶
Comparar el porcentaje de memoria utilizada en varios servidores.
Consulta¶
Configuración¶
Título: Uso de memoria por instancia
Visualización: Bar Gauge
Orientación: Horizontal
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Decimales: 1
Orden: Descendente por valor
Umbrales¶
Descripción¶
Ejemplo completo 3: almacenamiento por punto de montaje¶
Objetivo¶
Identificar los sistemas de ficheros con mayor ocupación.
Consulta¶
max by (instance, mountpoint) (
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
)
Configuración¶
Título: Uso de almacenamiento
Visualización: Bar Gauge
Orientación: Horizontal
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Decimales: 1
Orden: Descendente por valor
Nombres¶
Umbrales¶
Descripción¶
Ejemplo completo 4: tráfico recibido por interfaz¶
Objetivo¶
Comparar el tráfico recibido por las interfaces de red.
Consulta¶
Configuración¶
Título: Tráfico recibido por interfaz
Visualización: Bar Gauge
Orientación: Horizontal
Unidad: bytes/sec
Mínimo: 0
Máximo: Automático
Decimales: 1
Orden: Descendente por valor
Nombres¶
Descripción¶
Velocidad media de recepción por interfaz durante los últimos cinco minutos.
La interfaz de loopback se excluye.
Ejemplo de sesión 1: crear un Bar Gauge de CPU¶
Objetivo¶
Comparar el uso de CPU de las instancias monitorizadas.
Pasos¶
- Acceder a Grafana:
- Abrir un dashboard.
- Añadir un panel.
- Seleccionar Prometheus.
- Introducir:
- Seleccionar la visualización
Bar Gauge. - Configurar:
Título: Uso de CPU por instancia
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Decimales: 1
Orientación: Horizontal
- Configurar los umbrales:
- Ordenar de mayor a menor.
- Guardar el panel.
- Guardar el dashboard.
Actividades¶
- Identifica la instancia con mayor uso.
- Identifica la instancia con menor uso.
- Comprueba los colores.
- Cambia el orden a ascendente.
- Vuelve a ordenar de forma descendente.
- Añade una descripción.
- Guarda una captura.
Ejemplo de sesión 2: crear un Bar Gauge de memoria¶
Objetivo¶
Comparar la memoria utilizada en las instancias.
Consulta¶
Pasos¶
- Crear un panel Bar Gauge.
- Introducir la consulta.
- Configurar:
Título: Uso de memoria por instancia
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Decimales: 1
Orientación: Horizontal
- Configurar:
- Ordenar de mayor a menor.
- Guardar el panel.
Actividades¶
- Identifica la instancia con más memoria utilizada.
- Compara el resultado con
free -h. - Comprueba si todas las instancias tienen la misma cantidad de memoria.
- Explica si una comparación basada únicamente en porcentajes puede ocultar diferencias de capacidad.
- Añade un segundo panel con memoria disponible en bytes.
Ejemplo de sesión 3: crear un Bar Gauge de almacenamiento¶
Objetivo¶
Identificar los sistemas de ficheros más llenos.
Consulta¶
max by (instance, mountpoint) (
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
)
Pasos¶
- Crear un panel Bar Gauge.
- Introducir la consulta.
- Seleccionar orientación horizontal.
- Configurar:
- Configurar los umbrales:
- Configurar el nombre:
- Ordenar de mayor a menor.
- Guardar el panel.
Actividades¶
- Identifica los sistemas de ficheros con mayor uso.
- Comprueba el sistema raíz con:
- Explica por qué se excluyen
tmpfsyoverlay. - Filtra únicamente el punto de montaje
/. - Compara el resultado antes y después del filtro.
Ejemplo de sesión 4: crear un Bar Gauge de red¶
Objetivo¶
Comparar el tráfico recibido por las interfaces de red.
Consulta¶
Configuración¶
Título: Tráfico recibido por interfaz
Unidad: bytes/sec
Mínimo: 0
Máximo: Automático
Decimales: 1
Orientación: Horizontal
Orden: Descendente por valor
Actividades¶
- Crea el panel.
- Identifica la interfaz con mayor tráfico.
- Excluye interfaces virtuales:
sum by (device) (
rate(node_network_receive_bytes_total{
device!="lo",
device!~"docker.*|veth.*"
}[5m])
)
- Compara ambos resultados.
- Consulta las estadísticas del sistema:
- Explica por qué
rate()es necesario.
Ejemplo de sesión 5: comparar orientación horizontal y vertical¶
Objetivo¶
Determinar qué orientación facilita más la lectura.
Pasos¶
- Crear un Bar Gauge de CPU por instancia.
- Utilizar orientación horizontal.
- Guardar una captura.
- Cambiar a orientación vertical.
- Guardar otra captura.
- Comparar ambos resultados.
Actividades¶
Responder:
- ¿Qué orientación muestra mejor los nombres largos?
- ¿Cuál aprovecha mejor un panel ancho?
- ¿Cuál es más útil para pocas series?
- ¿Cuál elegirías para las interfaces de red?
- ¿Cuál elegirías para servidores con nombres largos?
Ejemplo de sesión 6: mostrar los cinco servidores con más CPU¶
Objetivo¶
Reducir el número de barras y destacar los valores más altos.
Consulta¶
Configuración¶
Título: Cinco instancias con mayor uso de CPU
Visualización: Bar Gauge
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Orden: Descendente por valor
Actividades¶
- Ejecuta la consulta.
- Comprueba cuántas barras aparecen.
- Compara con la consulta sin
topk(). - Explica cuándo es útil limitar el número de resultados.
- Cambia el valor de
5a3. - Observa el resultado.
Ejemplo de sesión 7: diagnosticar demasiadas barras¶
Objetivo¶
Identificar una consulta que devuelve demasiadas series.
Consulta inicial¶
Esta consulta puede devolver muchas series porque incluye:
- Instancia.
- Interfaz.
- Tipo de métrica.
- Otras etiquetas.
Consulta mejorada¶
Actividades¶
- Ejecuta la primera consulta.
- Observa el número de barras.
- Ejecuta la consulta agrupada.
- Compara la legibilidad.
- Explica qué información se ha conservado.
- Explica qué información se ha agregado.
- Utiliza el inspector del panel.
Ejemplo de sesión 8: diagnosticar un Bar Gauge sin datos¶
Objetivo¶
Diferenciar un problema de visualización de un problema de consulta.
Consulta incorrecta¶
Pasos¶
- Crear un panel Bar Gauge.
- Introducir la consulta incorrecta.
- Observar el resultado.
- Abrir el inspector.
- Revisar la respuesta.
- Probar:
- Probar una consulta de varias series:
- Restaurar la consulta de CPU.
Actividades¶
Documentar:
- Consulta utilizada.
- Resultado observado.
- Mensaje de error.
- Diagnóstico.
- Solución aplicada.
Ejemplo de sesión 9: utilizar una variable de instancia¶
Objetivo¶
Permitir que el usuario seleccione la instancia que desea analizar.
Crear la variable¶
Crear una variable de dashboard llamada:
Consulta de variable:
La sintaxis disponible puede variar según la versión y el editor de variables utilizado.
Consulta del panel¶
100 - (
avg by (instance) (
rate(node_cpu_seconds_total{
mode="idle",
instance=~"$instance"
}[5m])
) * 100
)
Configuración¶
Actividades¶
- Crea la variable.
- Comprueba las instancias disponibles.
- Crea el Bar Gauge.
- Selecciona una instancia.
- Selecciona varias instancias.
- Comprueba la opción
All. - Documenta el comportamiento.
Ejemplo de sesión 10: verificar resultados mediante la API¶
Objetivo¶
Comparar los valores mostrados en Grafana con la API de Prometheus.
Consultar CPU por instancia¶
curl -sG \
http://localhost:9090/api/v1/query \
--data-urlencode '
query=100 - (
avg by (instance) (
rate(node_cpu_seconds_total{mode="idle"}[5m])
) * 100
)
' \
| jq
Consultar memoria por instancia¶
curl -sG \
http://localhost:9090/api/v1/query \
--data-urlencode '
query=100 * (
1 -
node_memory_MemAvailable_bytes
/
node_memory_MemTotal_bytes
)
' \
| jq
Mostrar nombres y valores¶
curl -sG \
http://localhost:9090/api/v1/query \
--data-urlencode '
query=100 - (
avg by (instance) (
rate(node_cpu_seconds_total{mode="idle"}[5m])
) * 100
)
' \
| jq -r '
.data.result[]
| [
.metric.instance,
.value[1]
]
| @tsv
'
Actividades¶
- Ejecuta la consulta desde la terminal.
- Ejecuta la misma consulta en Grafana.
- Compara los valores.
- Explica posibles diferencias temporales.
- Guarda el resultado como evidencia.
Buenas prácticas¶
Utilizar una agrupación clara¶
La consulta debe agrupar los datos según la comparación que se desea realizar.
Ejemplos:
Limitar el número de series¶
Un Bar Gauge con demasiadas barras es difícil de leer.
Utilizar:
o filtros por etiquetas.
Ordenar de forma útil¶
Para identificar problemas, ordenar de mayor a menor.
Utilizar nombres cortos y claros¶
Mostrar:
en lugar de:
Mantener una escala común¶
Cuando se comparan barras, todas deben utilizar una escala coherente.
Para porcentajes:
No comparar métricas incompatibles¶
No colocar en el mismo Bar Gauge:
- Porcentajes.
- Bytes por segundo.
- Segundos.
- Temperaturas.
Cada panel debe utilizar valores comparables.
Documentar la consulta¶
La descripción debe indicar:
- Qué representa cada barra.
- Cómo se agrupan las series.
- Qué unidad se utiliza.
- Qué periodo calcula
rate(). - Qué interfaces o sistemas se excluyen.
Combinar con otras visualizaciones¶
Una distribución eficaz puede ser:
Problemas habituales¶
El Bar Gauge no muestra datos¶
Comprobar:
Después:
Revisar:
- Fuente de datos.
- Consulta.
- Rango temporal.
- Estado de los objetivos.
- Etiquetas.
- Variables.
- Inspector.
Solo aparece una barra¶
Posibles causas:
- La consulta agrega todas las series.
- Solo existe una instancia.
- Se ha utilizado
sum()sinby. - Se ha filtrado una única instancia.
- La fuente de datos solo contiene un objetivo.
Ejemplo que produce un único valor:
Ejemplo que conserva una barra por instancia:
Aparecen demasiadas barras¶
Aplicar:
- Filtros.
- Agregaciones.
topk().- Exclusiones de interfaces.
- Exclusiones de sistemas de ficheros.
- Variables.
Las barras tienen nombres ilegibles¶
Configurar:
- Alias.
- Nombres basados en etiquetas.
- Transformaciones.
- Campos visibles.
- Agrupaciones más claras.
Todas las barras aparecen con el mismo color¶
Revisar:
- Umbrales.
- Modo de color.
- Escala.
- Valores devueltos.
- Tipo de unidad.
Las barras tienen escalas incorrectas¶
Comprobar:
- Unidad.
- Mínimo.
- Máximo.
- Si la consulta devuelve
0 - 1o0 - 100. - Si se ha aplicado una transformación.
El orden no es útil¶
Cambiar el orden:
Para incidencias, normalmente es útil mostrar primero los valores más altos.
El tráfico aparece como cero¶
Posibles causas:
- No hay tráfico durante el periodo.
- El rango temporal es demasiado corto.
- La interfaz está inactiva.
- Se ha excluido la interfaz utilizada.
- La consulta utiliza una etiqueta incorrecta.
- No se ha aplicado
rate()a un contador.
Comprobar:
El uso de disco aparece duplicado¶
Puede haber varias series para el mismo punto de montaje debido a etiquetas adicionales.
Utilizar una agregación controlada:
max by (instance, mountpoint) (
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
)
Evidencias de la práctica¶
Crear el directorio:
Guardar las consultas:
cat > ~/laboratorio-grafana/evidencias/panel-bar-gauge/consultas-promql.txt <<'EOF'
CPU por instancia:
100 - (
avg by (instance) (
rate(node_cpu_seconds_total{mode="idle"}[5m])
) * 100
)
Memoria por instancia:
100 * (
1 -
node_memory_MemAvailable_bytes
/
node_memory_MemTotal_bytes
)
Almacenamiento por punto de montaje:
max by (instance, mountpoint) (
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
)
Tráfico recibido por interfaz:
sum by (device) (
rate(node_network_receive_bytes_total{
device!="lo"
}[5m])
)
Cinco instancias con mayor CPU:
topk(
5,
100 - (
avg by (instance) (
rate(node_cpu_seconds_total{mode="idle"}[5m])
) * 100
)
)
EOF
Guardar el resultado de CPU por instancia:
curl -sG \
http://localhost:9090/api/v1/query \
--data-urlencode '
query=100 - (
avg by (instance) (
rate(node_cpu_seconds_total{mode="idle"}[5m])
) * 100
)
' \
| jq \
> ~/laboratorio-grafana/evidencias/panel-bar-gauge/cpu-por-instancia.json
Guardar un informe:
cat > ~/laboratorio-grafana/evidencias/panel-bar-gauge/informe.txt <<'EOF'
Práctica: Panel Bar Gauge
Dashboard utilizado:
Paneles creados:
Métricas comparadas:
Agrupaciones utilizadas:
Orientación utilizada:
Unidades configuradas:
Mínimos y máximos:
Umbrales configurados:
Orden utilizado:
Filtros aplicados:
Prueba con topk:
Problemas encontrados:
Soluciones aplicadas:
Conclusiones:
EOF
Capturas recomendadas:
01-bar-gauge-cpu.png
02-bar-gauge-memoria.png
03-bar-gauge-almacenamiento.png
04-bar-gauge-red.png
05-bar-gauge-orientacion-horizontal.png
06-bar-gauge-orientacion-vertical.png
07-bar-gauge-topk.png
08-bar-gauge-demasiadas-series.png
09-bar-gauge-dashboard-final.png
Práctica integradora¶
Objetivo¶
Crear un dashboard que compare los recursos utilizados por varias instancias.
Panel 1: CPU por instancia¶
Consulta:
Configuración:
Título: Uso de CPU por instancia
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Orden: Descendente por valor
Umbrales:
Panel 2: memoria por instancia¶
Consulta:
Configuración:
Título: Uso de memoria por instancia
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Orden: Descendente por valor
Panel 3: almacenamiento¶
Consulta:
max by (instance, mountpoint) (
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
)
Configuración:
Título: Uso de almacenamiento
Unidad: Percent (0-100)
Mínimo: 0
Máximo: 100
Orden: Descendente por valor
Panel 4: tráfico recibido¶
Consulta:
Configuración:
Título: Tráfico recibido por instancia
Unidad: bytes/sec
Mínimo: 0
Máximo: Automático
Orden: Descendente por valor
Distribución propuesta¶
+------------------------------------------------------+
| Uso de CPU por instancia |
+------------------------------------------------------+
| Uso de memoria por instancia |
+------------------------------------------------------+
| Uso de almacenamiento |
+------------------------------------------------------+
| Tráfico recibido por instancia |
+------------------------------------------------------+
Tareas¶
- Crear los cuatro paneles.
- Utilizar Bar Gauge en todos ellos.
- Configurar las unidades.
- Configurar los límites.
- Configurar los umbrales.
- Ordenar las barras de mayor a menor.
- Configurar nombres comprensibles.
- Excluir interfaces irrelevantes.
- Excluir sistemas de ficheros virtuales.
- Comparar los resultados con el sistema operativo.
- Crear una consulta
topk()para CPU. - Diagnosticar una consulta con demasiadas series.
- Utilizar el inspector.
- Guardar capturas.
- Exportar el dashboard.
- Completar el informe.
Tabla de resultados¶
| Comprobación | Resultado | Observaciones |
|---|---|---|
| Bar Gauge de CPU creado | ||
| Bar Gauge de memoria creado | ||
| Bar Gauge de almacenamiento creado | ||
| Bar Gauge de red creado | ||
| Consulta agrupada correctamente | ||
| Orientación configurada | ||
| Unidad configurada | ||
| Mínimo configurado | ||
| Máximo configurado | ||
| Umbrales configurados | ||
| Orden descendente configurado | ||
| Nombres de series corregidos | ||
| Interfaces filtradas | ||
| Sistemas virtuales excluidos | ||
Consulta topk() realizada |
||
| Consulta con demasiadas series diagnosticada | ||
| Inspector utilizado | ||
| Dashboard exportado | ||
| Evidencias guardadas |
Puntos clave¶
- El panel Bar Gauge permite comparar varias series mediante barras.
- Cada barra representa una serie devuelta por la consulta.
- La agrupación PromQL determina qué representa cada barra.
sum by (instance)conserva una barra por instancia.sum by (device)conserva una barra por interfaz.- El Bar Gauge es especialmente útil para comparar recursos.
- La orientación horizontal facilita la lectura de nombres largos.
- Los porcentajes suelen utilizar una escala de
0a100. - Las unidades deben coincidir con el resultado de la consulta.
- Los umbrales deben adaptarse a la métrica.
- El orden descendente ayuda a localizar los valores más altos.
topk()permite mostrar únicamente los valores principales.- Demasiadas series reducen la legibilidad.
- Los filtros y las agregaciones ayudan a controlar el número de barras.
- Los nombres de las series deben ser breves y comprensibles.
rate()es necesario para calcular velocidades a partir de contadores.- Un Bar Gauge muestra principalmente una comparación actual o reducida.
- Un Time series es más adecuado para analizar tendencias.
- Un Gauge es más apropiado para un valor individual.
- La documentación de la consulta y los filtros facilita el mantenimiento.
Preguntas de comprobación¶
- ¿Qué finalidad tiene un panel Bar Gauge?
- ¿Qué diferencia existe entre un Bar Gauge y un Gauge?
- ¿Qué diferencia existe entre un Bar Gauge y un Stat?
- ¿Qué diferencia existe entre un Bar Gauge y un Time series?
- ¿Qué representa cada barra?
- ¿Qué función cumple
sum by (instance)? - ¿Qué función cumple
sum by (device)? - ¿Qué consulta utilizarías para comparar el uso de CPU por instancia?
- ¿Qué consulta utilizarías para comparar el tráfico recibido por interfaz?
- ¿Por qué se utiliza
rate()con las métricas de red? - ¿Qué orientación elegirías para nombres de servidor largos?
- ¿Qué escala utilizarías para porcentajes?
- ¿Qué problemas puede producir una consulta con demasiadas series?
- ¿Cómo reducirías el número de barras?
- ¿Qué función cumple
topk()? - ¿Qué filtros aplicarías a las interfaces de red?
- ¿Por qué se excluyen habitualmente
tmpfsyoverlay? - ¿Qué revisarías si solo aparece una barra?
- ¿Qué revisarías si aparecen demasiadas barras?
- ¿Qué revisarías si el Bar Gauge no muestra datos?
- ¿Cómo configurarías los nombres de las series?
- ¿Por qué es importante ordenar las barras?
- ¿Qué unidad utilizarías para el tráfico de red?
- ¿Qué evidencias guardarías durante la práctica?
- ¿Qué características debe tener un Bar Gauge bien diseñado?
Resultado esperado¶
Al finalizar esta sección, el alumno debe ser capaz de crear comparaciones visuales entre varias series.
El proceso completo será:
Seleccionar una métrica
|
v
Identificar la dimensión de comparación
|
v
Agrupar las series con PromQL
|
v
Seleccionar Bar Gauge
|
v
Configurar nombres y orientación
|
v
Configurar unidad y escala
|
v
Configurar umbrales
|
v
Ordenar y filtrar resultados
|
v
Probar valores normales y extremos
|
v
Guardar y documentar
El resultado final debe ser un panel Bar Gauge capaz de mostrar, de forma clara y ordenada, qué instancia, interfaz o recurso presenta el valor más alto, más bajo o más próximo a un límite.