Laboratorio
Aquí tienes una página Markdown completa, lista para guardar como:
# Laboratorio - Instalación y primeros pasos con Grafana
## Objetivos
Al finalizar este laboratorio podrás:
- Comprobar los requisitos de un sistema Ubuntu para instalar Grafana.
- Instalar Grafana mediante el repositorio oficial.
- Iniciar y habilitar el servicio `grafana-server`.
- Acceder a la interfaz web de Grafana.
- Cambiar la contraseña inicial del administrador.
- Configurar una fuente de datos Prometheus.
- Crear un dashboard básico.
- Añadir filas y paneles de visualización.
- Utilizar el selector de rango de tiempo.
- Ejecutar consultas PromQL sencillas.
- Verificar el funcionamiento de la instalación.
- Diagnosticar problemas básicos de acceso y conectividad.
## Introducción
En este laboratorio se realizará una instalación completa de Grafana en Ubuntu 24.04.5 LTS.
El ejercicio cubrirá el ciclo básico de trabajo:
```text
Comprobar requisitos
│
▼
Instalar Grafana
│
▼
Iniciar el servicio
│
▼
Acceder a la interfaz web
│
▼
Configurar la cuenta de administrador
│
▼
Añadir Prometheus
│
▼
Crear un dashboard
│
▼
Validar las visualizaciones
La arquitectura del laboratorio será:
Grafana se utilizará como plataforma de visualización y Prometheus como fuente de datos de métricas.
La configuración recomendada para una máquina virtual de laboratorio es:
| Recurso | Recomendación |
|---|---|
| CPU | 2 vCPU |
| Memoria RAM | 4 GB |
| Almacenamiento | 20 GB |
| Sistema operativo | Ubuntu Server 24.04.5 LTS |
| Grafana | Puerto 3000 |
| Prometheus | Puerto 9090 |
| Node Exporter | Puerto 9100 |
El laboratorio puede realizarse con Prometheus instalado en el mismo servidor o en un sistema independiente.
Contenido¶
Requisitos previos¶
Antes de comenzar, comprueba que dispones de:
- Un servidor Ubuntu 24.04.5 LTS.
- Un usuario con permisos
sudo. - Acceso a Internet.
- Un navegador web.
- Dirección IP o nombre DNS del servidor.
- Prometheus instalado y accesible.
- Node Exporter instalado, si se desean consultar métricas del sistema.
- El puerto
3000/tcpdisponible.
Comprueba la versión de Ubuntu:
Comprueba la arquitectura:
Comprueba la memoria disponible:
Comprueba el espacio libre:
Comprueba si el puerto de Grafana está ocupado:
Comprobar Prometheus¶
Si Prometheus está instalado en el mismo servidor:
Si Prometheus está instalado en otro servidor:
Una respuesta correcta debe indicar que Prometheus está preparado para recibir consultas.
Comprueba también la API de Prometheus:
Si Prometheus no responde, resuelve ese problema antes de continuar con la configuración de Grafana.
Comprobar Node Exporter¶
Si Node Exporter está instalado en el mismo servidor:
Si está instalado en otro servidor:
Una respuesta correcta debe mostrar métricas con nombres similares a:
# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter
Si Node Exporter no está disponible, Grafana podrá funcionar, pero no mostrará métricas del sistema a través de Prometheus.
Instalación de Grafana¶
Actualizar Ubuntu¶
Actualiza la información de los paquetes:
Instala las actualizaciones disponibles:
Reinicia el sistema si el proceso de actualización lo requiere:
Después del reinicio, vuelve a conectarte al servidor.
Instalar las dependencias¶
Instala las herramientas necesarias:
sudo apt install -y \
ca-certificates \
wget \
gnupg \
apt-transport-https \
software-properties-common
Comprueba que wget está disponible:
Comprueba que gpg está disponible:
Añadir la clave del repositorio¶
Crea el directorio para las claves de repositorios:
Descarga y almacena la clave del repositorio de Grafana:
wget -q -O - https://apt.grafana.com/gpg.key \
| gpg --dearmor \
| sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
Comprueba que el fichero existe:
Añadir el repositorio¶
Crea el fichero del repositorio:
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" \
| sudo tee /etc/apt/sources.list.d/grafana.list
Comprueba su contenido:
Actualiza el índice de paquetes:
Comprueba la versión disponible:
Instalar el paquete¶
Instala Grafana:
Comprueba que el paquete está instalado:
Consulta la versión instalada:
Puesta en marcha del servicio¶
Iniciar Grafana¶
Recarga las unidades de systemd:
Inicia Grafana:
Comprueba el estado:
El estado esperado es:
Habilitar el inicio automático¶
Configura Grafana para iniciarse automáticamente con Ubuntu:
También puedes habilitarlo e iniciarlo en un único comando:
Comprueba que está habilitado:
La salida esperada es:
Comprueba que está activo:
La salida esperada es:
Comprobar el puerto¶
Verifica que Grafana escucha en el puerto 3000:
Comprueba la respuesta HTTP:
Consulta la API de salud:
La respuesta debe indicar que la base de datos está disponible.
Consultar los logs¶
Consulta los últimos mensajes:
Consulta los logs en tiempo real:
Para salir de la vista en tiempo real, pulsa:
Acceso a Grafana¶
Acceso local¶
Si el navegador se ejecuta en el mismo servidor, abre:
También puedes utilizar:
Acceso remoto¶
Obtén la dirección IP del servidor:
También puedes utilizar:
Desde otro equipo, abre:
Por ejemplo:
Comprobar el acceso desde el cliente¶
Desde el equipo cliente, comprueba el puerto:
Comprueba la respuesta HTTP:
Si el acceso local funciona, pero el remoto no, revisa:
- Dirección IP.
- Firewall del servidor.
- Reglas de red.
- Configuración de escucha.
- Reglas de seguridad de la máquina virtual.
- Conectividad entre los equipos.
Configurar el firewall¶
Comprueba el estado de UFW:
Para permitir el acceso desde una red local:
Para permitir el acceso desde una sola dirección:
Comprueba las reglas:
No expongas el puerto de Grafana a Internet sin medidas adicionales de seguridad.
Configuración inicial¶
Primer inicio de sesión¶
En una instalación nueva, utiliza las credenciales iniciales:
Grafana solicitará cambiar la contraseña.
Establece una contraseña:
- Larga.
- Única.
- Difícil de adivinar.
- No reutilizada en otros servicios.
- Guardada de forma segura.
No conserves las credenciales predeterminadas.
Configurar la zona horaria¶
Comprueba la zona horaria del sistema:
Si es necesario, configura la zona horaria:
Comprueba la hora:
En Grafana, selecciona una de estas opciones según las necesidades del laboratorio:
La zona horaria debe ser coherente cuando se comparen Grafana, Prometheus y los sistemas monitorizados.
Revisar las preferencias¶
Revisa las preferencias del usuario:
- Tema de la interfaz.
- Idioma.
- Zona horaria.
- Dashboard de inicio.
- Preferencias de visualización.
Para este laboratorio se recomienda utilizar:
Zona horaria: Europe/Madrid o la del navegador
Tema: libre
Dashboard inicial: el dashboard del laboratorio
Configurar Prometheus como fuente de datos¶
Comprobar la dirección de Prometheus¶
Si Prometheus está en el mismo servidor:
Si está en otro servidor:
Si Grafana se ejecuta en un contenedor, localhost puede hacer referencia al propio contenedor y no al servidor donde se encuentra Prometheus.
En ese caso, utiliza:
- El nombre del servicio de Docker.
- La dirección IP del host.
- El nombre DNS correspondiente.
- Una red compartida entre contenedores.
Añadir la fuente desde la interfaz¶
En Grafana:
- Abre la configuración.
- Accede a Data sources o Fuentes de datos.
- Selecciona Add data source.
- Elige Prometheus.
- Introduce la URL de Prometheus.
- Utiliza el modo de acceso del servidor o proxy.
- Guarda la configuración.
- Ejecuta la prueba de conexión.
Para una instalación local:
La conexión debe finalizar con un mensaje equivalente a:
Comprobar la fuente de datos¶
Desde el servidor de Grafana:
Desde Grafana, abre el explorador de datos y selecciona:
Ejecuta la consulta:
Si devuelve resultados, Grafana puede consultar Prometheus correctamente.
Crear el dashboard del laboratorio¶
Crear el dashboard¶
Crea un dashboard nuevo con el nombre:
Guárdalo en una carpeta llamada:
Configura el rango temporal inicial:
Configura la actualización automática:
La estructura será:
Crear la fila Resumen¶
Crea una fila llamada:
Añade un panel de tipo Stat con la consulta:
Configura:
Añade un segundo panel de tipo Stat:
Configura:
Define umbrales para el segundo panel:
Crear la fila CPU y carga¶
Crea una fila llamada:
Añade un panel de tipo Time series:
Configura:
Añade otro panel para la carga media:
Configura:
La carga media debe interpretarse teniendo en cuenta el número de CPUs del sistema.
Crear la fila Memoria¶
Crea una fila llamada:
Añade un panel de tipo Gauge:
Configura:
Define umbrales orientativos:
Añade un panel de tipo Time series:
Configura:
Crear la fila Almacenamiento¶
Crea una fila llamada:
Añade un panel de tipo Time series:
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay"
}
)
Configura:
Dependiendo de las etiquetas disponibles, puede ser necesario filtrar determinados puntos de montaje:
100 * (
1 -
node_filesystem_avail_bytes{
fstype!~"tmpfs|overlay",
mountpoint!~"/run|/sys|/proc"
}
/
node_filesystem_size_bytes{
fstype!~"tmpfs|overlay",
mountpoint!~"/run|/sys|/proc"
}
)
Añadir una variable de servidor¶
Crear la variable¶
Crea una variable denominada:
Configúrala para que permita seleccionar una o varias instancias monitorizadas.
Los valores pueden ser similares a:
La forma de obtener los valores depende de la versión de Grafana y de la configuración de Prometheus.
Utilizar la variable en una consulta¶
Modifica la consulta de CPU:
100 - (
avg by (instance) (
rate(node_cpu_seconds_total{
mode="idle",
instance=~"$instance"
}[5m])
) * 100
)
El operador =~ permite utilizar selección múltiple o expresiones regulares.
Prueba las siguientes selecciones:
Comprueba que los paneles cambian según la selección.
Utilizar el selector de rango¶
Prueba los siguientes intervalos:
Observa los cambios en:
- Número de puntos.
- Resolución de los gráficos.
- Tendencias.
- Tiempo de respuesta.
- Disponibilidad de datos.
Prueba también un intervalo absoluto:
Documenta la zona horaria utilizada.
Comparar periodos¶
Configura el dashboard con:
Crea o duplica un panel de CPU.
Panel actual:
Panel anterior:
Configura títulos claros:
Comprueba que ambos paneles utilizan:
- La misma consulta.
- La misma fuente de datos.
- El mismo filtro.
- El mismo tipo de visualización.
Crear un panel de texto¶
Añade un panel de tipo Text con el siguiente contenido:
## Laboratorio de Grafana
Este dashboard muestra métricas de infraestructura Linux obtenidas
desde Prometheus.
### Convenciones
- Verde: funcionamiento normal.
- Amarillo: requiere revisión.
- Rojo: situación crítica.
- Gris: sin datos.
### Configuración
- Rango recomendado: últimas 6 horas.
- Actualización: cada 1 minuto.
- Fuente de datos: Prometheus.
- Exporter utilizado: Node Exporter.
- Zona horaria: la configurada en el laboratorio.
El panel debe colocarse en la fila Resumen o al principio del dashboard.
Validación del laboratorio¶
Validar el servicio¶
Ejecuta:
Resultado esperado:
Ejecuta:
Resultado esperado:
Validar el puerto¶
Ejecuta:
Debe aparecer Grafana escuchando en el puerto 3000.
Validar la API¶
Ejecuta:
La respuesta debe indicar que la base de datos está disponible.
Validar Prometheus¶
Ejecuta:
La respuesta debe indicar que Prometheus está preparado.
Validar Node Exporter¶
Ejecuta:
Deben aparecer métricas del sistema.
Validar el dashboard¶
Comprueba:
[ ] El dashboard se abre correctamente.
[ ] La fuente Prometheus está disponible.
[ ] La consulta up devuelve resultados.
[ ] Los paneles muestran datos.
[ ] Las unidades son correctas.
[ ] Los títulos son descriptivos.
[ ] Las filas están ordenadas.
[ ] El selector temporal funciona.
[ ] La actualización automática funciona.
[ ] La variable instance funciona.
[ ] Los umbrales cambian los colores.
[ ] El dashboard se ha guardado.
Ejemplo¶
Ejecución completa del laboratorio¶
La secuencia principal de comandos es:
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
ca-certificates \
wget \
gnupg \
apt-transport-https \
software-properties-common
sudo install -d -m 0755 /etc/apt/keyrings
wget -q -O - https://apt.grafana.com/gpg.key \
| gpg --dearmor \
| sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" \
| sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install -y grafana
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server
systemctl is-active grafana-server
systemctl is-enabled grafana-server
sudo ss -lntp | grep ':3000'
curl -s http://localhost:3000/api/health
Después:
- Abre
http://DIRECCION_IP:3000. - Inicia sesión.
- Cambia la contraseña inicial.
- Añade Prometheus.
- Ejecuta la consulta
up. - Crea el dashboard.
- Añade las filas y paneles.
- Guarda y valida el resultado.
Diagnóstico de una instalación que no inicia¶
Si Grafana no se inicia:
Consulta los logs:
Comprueba si el puerto está ocupado:
Comprueba los permisos:
Revisa la configuración principal:
Después de corregir el problema:
Comprueba de nuevo:
Diagnóstico de una fuente de datos sin conexión¶
Si Grafana no puede conectarse a Prometheus:
- Comprueba que Prometheus está activo.
- Verifica la URL configurada.
- Prueba la conexión desde el servidor de Grafana.
- Comprueba el puerto
9090. - Revisa el firewall.
- Revisa los logs.
- Comprueba si Grafana se ejecuta en un contenedor.
Desde el servidor de Grafana:
Comprueba el puerto:
Si Prometheus está en el mismo servidor:
Diagnóstico de un panel vacío¶
Si un panel no muestra datos:
[ ] Comprueba el rango temporal.
[ ] Comprueba la fuente de datos.
[ ] Ejecuta la consulta en Explore.
[ ] Comprueba el nombre de la métrica.
[ ] Comprueba las etiquetas.
[ ] Comprueba la retención de Prometheus.
[ ] Comprueba que Node Exporter está activo.
[ ] Comprueba los logs de Prometheus.
[ ] Comprueba los logs de Grafana.
Ejecuta una consulta básica:
Si up tampoco devuelve resultados, revisa la configuración de Prometheus y sus objetivos.
Consulta los objetivos de Prometheus:
Puntos clave¶
- El laboratorio combina Grafana, Prometheus y Node Exporter.
- Grafana utiliza normalmente el puerto
3000. - Prometheus utiliza normalmente el puerto
9090. - Node Exporter utiliza normalmente el puerto
9100. - El servicio de Grafana se administra mediante
systemctl. - El inicio automático se configura con
systemctl enable. - La API
/api/healthpermite realizar una comprobación básica. - La contraseña inicial debe cambiarse durante el primer acceso.
- Prometheus debe estar accesible desde el servidor de Grafana.
- La consulta
upes útil para validar la conectividad y disponibilidad de objetivos. - Un dashboard debe organizarse mediante filas y paneles relacionados.
- Los títulos, unidades y umbrales deben ser claros.
- Las variables permiten reutilizar un dashboard con diferentes instancias.
- La consulta
instance=~"$instance"permite utilizar una variable con múltiples valores. - El selector temporal debe adaptarse al objetivo del dashboard.
- Las comparaciones deben utilizar periodos equivalentes.
- Los paneles vacíos pueden deberse a falta de datos, filtros incorrectos o problemas de conectividad.
- Los logs de
systemdson esenciales para diagnosticar errores de Grafana. - La configuración final debe validarse mediante una lista de comprobación.
- Los dashboards deben guardarse y exportarse como parte de la documentación del laboratorio.
Preguntas de comprobación¶
- ¿Qué componentes forman la arquitectura de este laboratorio?
- ¿Qué puerto utiliza normalmente Grafana?
- ¿Qué puerto utiliza normalmente Prometheus?
- ¿Qué función cumple Node Exporter?
- ¿Qué comando permite iniciar automáticamente Grafana con Ubuntu?
- ¿Cómo comprobarías que el servicio
grafana-serverestá activo? - ¿Qué URL utilizarías para acceder a Grafana desde otro equipo?
- ¿Por qué es necesario cambiar la contraseña inicial?
- ¿Qué consulta PromQL puede utilizarse para comprobar los objetivos monitorizados?
- ¿Qué pasos seguirías para añadir Prometheus como fuente de datos?
- ¿Qué diferencia existe entre una fila y un panel?
- ¿Qué tipo de panel utilizarías para mostrar la evolución de la CPU?
- ¿Qué tipo de panel utilizarías para mostrar un único valor?
- ¿Qué función cumplen los umbrales?
- ¿Por qué es importante configurar correctamente las unidades?
- ¿Qué operador se utiliza en PromQL para filtrar una variable con varios valores?
- ¿Qué comprobarías si un panel no muestra datos?
- ¿Qué comprobarías si Grafana funciona localmente, pero no desde otro equipo?
- ¿Qué información revisarías si el servicio no se inicia?
- ¿Qué elementos deben validarse antes de finalizar el laboratorio?
## Resultado esperado Al finalizar el laboratorio deberás disponer de: ```text Grafana instalado y activo │ ▼ Acceso web operativo │ ▼ Contraseña de administrador modificada │ ▼ Prometheus configurado como fuente de datos │ ▼ Dashboard creado │ ├── Fila Resumen ├── Fila CPU y carga ├── Fila Memoria └── Fila Almacenamiento
El resultado final será una instancia funcional de Grafana capaz de consultar métricas de Prometheus y representarlas mediante dashboards, filas y paneles.