Requisitos previos¶
Esta sección describe los conocimientos, herramientas y condiciones necesarias para realizar correctamente el curso de Grafana, Prometheus y Node Exporter.
El curso tiene un enfoque práctico. Por ello, no basta con conocer los conceptos teóricos: también será necesario trabajar con una terminal Linux, editar ficheros de configuración, consultar servicios y analizar resultados.
Objetivos¶
Al finalizar esta sección, el alumno podrá:
- Comprobar que su entorno de trabajo cumple los requisitos del curso.
- Identificar la versión del sistema operativo y del kernel.
- Utilizar comandos básicos de Linux desde la terminal.
- Consultar el estado de servicios mediante
systemctl. - Comprobar puertos y conexiones de red.
- Editar ficheros de texto y configuración.
- Interpretar estructuras básicas en formato YAML.
- Comprender el uso de permisos administrativos mediante
sudo. - Verificar la conectividad entre Grafana, Prometheus y Node Exporter.
- Preparar un entorno de laboratorio reproducible.
- Identificar los problemas más habituales antes de comenzar las prácticas.
Introducción¶
Grafana y Prometheus son herramientas que funcionan como servicios dentro de un sistema Linux. Durante el curso será necesario instalar paquetes, modificar ficheros, consultar puertos y revisar registros.
El alumno trabajará principalmente con:
- Ubuntu.
- La terminal.
- Servicios gestionados por
systemd. - Ficheros de configuración.
- Protocolos HTTP.
- Puertos TCP.
- YAML.
- Métricas de series temporales.
- Consultas PromQL.
El curso no exige experiencia avanzada de administración de sistemas. Sin embargo, sí requiere una base mínima para ejecutar comandos, interpretar salidas y resolver errores sencillos.
Una buena preparación evita problemas posteriores. Antes de configurar un dashboard, es necesario verificar que el sistema, la red y los servicios funcionan correctamente.
Requisitos del sistema¶
Sistema operativo¶
El entorno recomendado es:
También pueden utilizarse otras versiones recientes de Ubuntu, aunque los nombres de algunos paquetes o las rutas de configuración podrían variar.
Comprobar la versión instalada:
Ejemplo de salida:
$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 24.04.5 LTS
Release: 24.04.5 LTS
Codename: noble
También se puede consultar el fichero de identificación del sistema:
Arquitectura del sistema¶
Comprobar la arquitectura:
Resultado habitual:
La arquitectura x86_64 también puede aparecer como amd64.
Recursos recomendados¶
Para el laboratorio se recomienda disponer, como mínimo, de:
| Recurso | Mínimo recomendado |
|---|---|
| CPU | 2 núcleos |
| Memoria RAM | 4 GB |
| Almacenamiento libre | 20 GB |
| Sistema operativo | Ubuntu 24.04.5 LTS |
| Acceso administrativo | Usuario con sudo |
| Red | Acceso a Internet |
| Navegador | Chrome, Firefox o Chromium |
Estos valores son suficientes para realizar las prácticas del curso en un entorno de laboratorio.
Conocimientos recomendados¶
Linux básico¶
El alumno debe conocer, al menos de forma introductoria:
- Navegación por directorios.
- Creación y eliminación de ficheros.
- Lectura de ficheros de texto.
- Uso de rutas absolutas y relativas.
- Redirecciones.
- Tuberías.
- Búsqueda de texto.
- Permisos básicos.
- Procesos y servicios.
Ejemplos de comandos habituales:
Redes básicas¶
Es recomendable comprender:
- Qué es una dirección IP.
- Qué es un puerto TCP.
- Qué es
localhost. - Qué significa escuchar en una dirección.
- Qué función cumple HTTP.
- Qué diferencia existe entre un servicio local y uno remoto.
Durante el curso se utilizarán, entre otros, estos puertos:
| Servicio | Puerto habitual | Función |
|---|---|---|
| Grafana | 3000 | Interfaz web |
| Prometheus | 9090 | Interfaz y API |
| Node Exporter | 9100 | Endpoint de métricas |
Ficheros YAML¶
Prometheus utiliza YAML para su configuración. Es importante respetar:
- La indentación.
- Los dos puntos.
- La estructura de listas.
- Los espacios.
- La ausencia de tabuladores.
Ejemplo válido:
global:
scrape_interval: 15s
scrape_configs:
- job_name: node_exporter
static_configs:
- targets:
- localhost:9100
Ejemplo incorrecto:
global:
scrape_interval: 15s
scrape_configs:
- job_name: node_exporter
static_configs:
- targets:
- localhost:9100
Aunque algunos analizadores pueden aceptar ciertas variantes, una indentación inconsistente facilita los errores de configuración.
Permisos administrativos¶
Muchas tareas requieren privilegios de administrador:
El usuario debe poder ejecutar comandos con sudo.
Comprobar los permisos:
Si el comando no muestra ningún error, las credenciales administrativas son válidas.
Preparación del entorno¶
Actualizar los paquetes¶
Antes de comenzar, actualizar la información de los repositorios:
Actualizar los paquetes instalados:
Durante un laboratorio también puede utilizarse:
Instalar herramientas básicas¶
Instalar las herramientas que se utilizarán durante el curso:
sudo apt install -y \
curl \
wget \
git \
vim \
nano \
jq \
tree \
net-tools \
lsof \
ca-certificates \
gnupg \
apt-transport-https
Comprobar algunas versiones:
Crear un directorio de trabajo¶
Crear un directorio para los ficheros temporales del laboratorio:
Entrar en el directorio:
Comprobar la ubicación:
Crear subdirectorios:
Consultar la estructura:
Resultado esperado:
Sesiones prácticas¶
Las siguientes sesiones permiten comprobar progresivamente que el entorno está preparado.
Sesión 1: identificar el sistema¶
Objetivo¶
Recopilar información básica del equipo donde se realizará el laboratorio.
Comandos¶
Consultar el nombre del equipo:
Consultar información detallada:
Consultar la versión de Ubuntu:
Consultar la versión del kernel:
Consultar la arquitectura:
Consultar la fecha y la hora:
Consultar la zona horaria:
Ejemplo de sesión¶
$ hostname
monitoring-lab
$ uname -r
6.8.0-40-generic
$ uname -m
x86_64
$ date
Thu Sep 24 10:05:42 CEST 2026
Actividades¶
- Anota el nombre del equipo.
- Anota la versión de Ubuntu.
- Anota la versión del kernel.
- Identifica la arquitectura.
- Comprueba la zona horaria.
- Explica por qué la hora del sistema es importante en una plataforma de monitorización.
Sesión 2: comprobar los recursos del sistema¶
Objetivo¶
Verificar que el equipo dispone de recursos suficientes para el laboratorio.
Consultar la memoria¶
Ejemplo:
$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 1.1Gi 720Mi 18Mi 2.0Gi 2.4Gi
Swap: 2.0Gi 0B 2.0Gi
Consultar los procesadores¶
Mostrar únicamente el número de procesadores:
Consultar el almacenamiento¶
Consultar los dispositivos:
Consultar el espacio del directorio personal:
Consultar la carga del sistema¶
Consultar procesos activos:
Consultar los procesos que más memoria consumen:
Actividades¶
- ¿Cuánta memoria total tiene el equipo?
- ¿Cuántos procesadores están disponibles?
- ¿Cuánto espacio libre existe en el sistema de ficheros raíz?
- ¿Qué proceso consume más CPU?
- ¿Qué proceso consume más memoria?
- ¿La carga del sistema parece normal?
Sesión 3: trabajar con ficheros y directorios¶
Objetivo¶
Practicar operaciones básicas sobre ficheros de configuración.
Entrar en el directorio de laboratorio:
Crear un fichero de prueba:
Escribir contenido:
cat > configuracion/prueba.conf <<'EOF'
nombre=servidor-laboratorio
entorno=pruebas
servicio=monitorizacion
EOF
Mostrar el contenido:
Añadir una línea:
Consultar las últimas líneas:
Buscar una propiedad:
Copiar el fichero:
Comparar los dos ficheros:
Eliminar el fichero de prueba:
Actividades¶
- Crea un fichero llamado
servidor.conf. - Añade el nombre del servidor.
- Añade el entorno.
- Añade los puertos de Grafana, Prometheus y Node Exporter.
- Crea una copia de seguridad.
- Modifica el fichero original.
- Utiliza
diffpara comprobar el cambio.
Ejemplo:
nombre=monitoring-lab
entorno=laboratorio
grafana_port=3000
prometheus_port=9090
node_exporter_port=9100
Sesión 4: permisos y usuario administrativo¶
Objetivo¶
Comprobar el usuario actual y practicar operaciones que requieren permisos elevados.
Consultar el usuario actual:
Consultar la identidad completa:
Consultar los grupos:
Comprobar si se puede utilizar sudo:
Consultar permisos de un fichero:
Crear un fichero temporal con permisos administrativos:
Cambiar el propietario:
Comprobar el resultado:
Eliminar el fichero:
Actividades¶
- Identifica el usuario actual.
- Comprueba si pertenece al grupo
sudo. - Explica la diferencia entre ejecutar un comando como usuario normal y utilizar
sudo. - Comprueba quién es el propietario de
/etc/hosts. - Crea un fichero temporal y cambia su propietario.
Sesión 5: comprobar la red¶
Objetivo¶
Verificar que el sistema tiene conectividad y que puede acceder a los servicios necesarios.
Consultar las interfaces de red:
Consultar las rutas:
Comprobar la puerta de enlace:
Comprobar resolución DNS:
Probar conectividad IP:
Probar conectividad mediante nombre:
Comprobar acceso HTTPS:
Comprobar la respuesta de Ubuntu:
Ejemplo de sesión¶
$ getent hosts archive.ubuntu.com
185.125.190.39 archive.ubuntu.com
$ curl -I https://grafana.com
HTTP/2 200
content-type: text/html
Diferencias importantes¶
Si funciona:
pero falla:
es posible que exista un problema de resolución DNS.
Si falla también la conexión a 8.8.8.8, puede existir un problema de red, de ruta o de cortafuegos.
Actividades¶
- Identifica la dirección IP del equipo.
- Identifica la puerta de enlace predeterminada.
- Comprueba si funciona la resolución DNS.
- Comprueba el acceso a una página HTTPS.
- Explica la diferencia entre conectividad IP y resolución DNS.
Sesión 6: comprobar puertos disponibles¶
Objetivo¶
Verificar que los puertos necesarios no están ocupados antes de instalar los servicios.
Consultar todos los puertos TCP en escucha:
Consultar un puerto concreto:
Comprobar los puertos del curso:
También se puede utilizar lsof:
Interpretación¶
Si no aparece ninguna salida para un puerto, normalmente significa que ningún proceso está escuchando en él.
Si aparece un proceso, hay que identificarlo:
Ejemplo:
Actividades¶
- Comprueba si el puerto
3000está disponible. - Comprueba si el puerto
9090está disponible. - Comprueba si el puerto
9100está disponible. - Si alguno está ocupado, identifica el proceso.
- Explica por qué dos servicios no pueden escuchar simultáneamente en la misma dirección y puerto.
Sesión 7: comprobar servicios con systemd¶
Objetivo¶
Aprender a consultar servicios antes de instalar Grafana, Prometheus y Node Exporter.
Consultar el estado del servicio SSH:
Comprobar si está activo:
Comprobar si está habilitado:
Consultar los servicios fallidos:
Consultar los últimos registros de un servicio:
Consultar registros recientes:
Diferencia entre estados¶
| Estado | Significado |
|---|---|
active |
El servicio está funcionando |
inactive |
El servicio está detenido |
failed |
El servicio intentó iniciarse y falló |
enabled |
Se iniciará automáticamente |
disabled |
No se iniciará automáticamente |
Actividades¶
- Consulta el estado de
ssh. - Comprueba si está activo.
- Consulta los últimos registros.
- Ejecuta
systemctl --failed. - Explica la diferencia entre
activeyenabled.
Sesión 8: validar sintaxis YAML¶
Objetivo¶
Comprender la estructura básica de un fichero YAML antes de trabajar con Prometheus.
Instalar un analizador YAML:
Crear un fichero de prueba:
cat > ~/laboratorio-grafana/configuracion/ejemplo.yml <<'EOF'
global:
scrape_interval: 15s
scrape_configs:
- job_name: node_exporter
static_configs:
- targets:
- localhost:9100
EOF
Validar el fichero:
Reglas importantes¶
YAML utiliza espacios para representar niveles.
Correcto:
Incorrecto:
También hay que evitar tabuladores:
Si no aparece ninguna salida, no se han encontrado tabuladores.
Actividades¶
- Crea un fichero YAML con información del laboratorio.
- Valida su sintaxis.
- Introduce deliberadamente un error de indentación.
- Ejecuta
yamllint. - Corrige el error.
- Explica por qué una indentación incorrecta puede impedir que Prometheus arranque.
Sesión 9: comprobar la hora y la sincronización¶
Objetivo¶
Verificar que el sistema tiene una hora correcta y sincronizada.
Consultar el estado:
Comprobar si el reloj está sincronizado:
Consultar la fecha UTC:
Consultar la fecha local:
Consultar la zona horaria:
Ejemplo de resultado¶
$ timedatectl show -p NTPSynchronized --value
yes
$ timedatectl show -p Timezone --value
Europe/Madrid
Actividades¶
- Comprueba si NTP está sincronizado.
- Anota la zona horaria.
- Compara la hora local con la hora UTC.
- Explica cómo una hora incorrecta puede afectar a un dashboard.
- Explica cómo puede afectar a una comparación temporal.
Sesión 10: prueba completa de preparación¶
Objetivo¶
Ejecutar una comprobación general antes de comenzar la instalación.
Crear un script de diagnóstico:
cat > ~/laboratorio-grafana/scripts/comprobar-entorno.sh <<'EOF'
#!/usr/bin/env bash
set -u
echo "== Sistema =="
hostname
lsb_release -ds
uname -m
uname -r
echo
echo "== Usuario =="
whoami
id -u
id -nG
echo
echo "== Recursos =="
nproc
free -h
df -h /
echo
echo "== Hora =="
timedatectl show -p NTPSynchronized --value
timedatectl show -p Timezone --value
date
echo
echo "== Red =="
ip route | grep default || true
getent hosts archive.ubuntu.com || true
echo
echo "== Puertos del laboratorio =="
for port in 3000 9090 9100; do
if ss -lnt "( sport = :$port )" | grep -q LISTEN; then
echo "Puerto $port: ocupado"
else
echo "Puerto $port: disponible"
fi
done
echo
echo "== Servicios fallidos =="
systemctl --failed --no-legend || true
EOF
Dar permisos de ejecución:
Ejecutar el script:
Guardar el resultado:
~/laboratorio-grafana/scripts/comprobar-entorno.sh \
| tee ~/laboratorio-grafana/evidencias/comprobacion-entorno.txt
Actividades¶
- Ejecuta el script.
- Guarda la salida.
- Revisa si existe algún puerto ocupado.
- Revisa si existen servicios fallidos.
- Comprueba la conectividad.
- Entrega el fichero de evidencias.
Errores frecuentes¶
El usuario no puede utilizar sudo¶
Comprobar los grupos:
Si el usuario no pertenece al grupo adecuado, será necesario utilizar una cuenta administrativa para corregirlo.
No se deben compartir contraseñas administrativas entre alumnos.
No hay conexión a Internet¶
Comprobar en este orden:
La comprobación debe avanzar desde la configuración local hasta el acceso HTTP.
El puerto ya está ocupado¶
Identificar el proceso:
O utilizar:
No se debe detener un servicio desconocido sin identificar previamente su función.
El sistema tiene poco espacio libre¶
Consultar el espacio:
Localizar directorios grandes:
No se deben borrar ficheros del sistema sin conocer su finalidad.
La hora no está sincronizada¶
Consultar el estado:
Una hora incorrecta puede provocar:
- Métricas con marcas temporales inesperadas.
- Dashboards aparentemente vacíos.
- Comparaciones temporales incorrectas.
- Problemas de certificados HTTPS.
- Confusión al analizar registros.
El fichero YAML no es válido¶
Validar con:
Revisar especialmente:
- Espacios.
- Indentación.
- Dos puntos.
- Guiones de las listas.
- Comillas.
- Tabuladores.
Puntos clave¶
- El laboratorio requiere un sistema Linux funcional y actualizado.
- Ubuntu 24.04.5 LTS es el entorno recomendado.
- El usuario debe poder utilizar
sudo. - Grafana utiliza normalmente el puerto
3000. - Prometheus utiliza normalmente el puerto
9090. - Node Exporter utiliza normalmente el puerto
9100. - Los puertos deben comprobarse antes de iniciar la instalación.
- La conectividad de red es necesaria para descargar paquetes y componentes.
systemctlpermite consultar y administrar servicios.journalctlpermite consultar registros de servicios.- La hora del sistema debe estar sincronizada.
- YAML utiliza espacios e indentación significativa.
- Los ficheros de configuración deben validarse antes de reiniciar servicios.
- Es recomendable guardar evidencias de las comprobaciones.
- Un entorno preparado reduce considerablemente los problemas durante las prácticas.
Preguntas de comprobación¶
Sistema operativo¶
- ¿Qué versión de Ubuntu se recomienda para el curso?
- ¿Qué comando muestra la arquitectura del sistema?
- ¿Qué comando permite consultar la versión del kernel?
- ¿Qué información proporciona
hostnamectl?
Recursos¶
- ¿Qué comando muestra la memoria disponible?
- ¿Qué comando permite consultar el espacio libre?
- ¿Qué comando muestra el número de procesadores?
- ¿Qué diferencia existe entre
freeyavailableen la salida defree -h?
Permisos¶
- ¿Para qué sirve
sudo? - ¿Qué comando permite comprobar la identidad del usuario?
- ¿Qué diferencia existe entre un usuario normal y un usuario con privilegios administrativos?
Red y puertos¶
- ¿Qué comando muestra las interfaces de red?
- ¿Qué comando muestra la ruta predeterminada?
- ¿Qué puerto utiliza normalmente Grafana?
- ¿Qué puerto utiliza normalmente Prometheus?
- ¿Qué puerto utiliza normalmente Node Exporter?
- ¿Cómo identificarías el proceso que ocupa el puerto
3000?
Servicios¶
- ¿Qué diferencia existe entre un servicio
activey unoenabled? - ¿Qué comando muestra los servicios fallidos?
- ¿Qué comando permite consultar los registros de Prometheus?
YAML¶
- ¿Por qué es importante la indentación en YAML?
- ¿Qué problema puede producir un tabulador en un fichero YAML?
- ¿Qué herramienta puede utilizarse para validar YAML?
- ¿Qué diferencia existe entre una lista y una propiedad en YAML?
Tiempo¶
- ¿Cómo comprobarías si el reloj está sincronizado?
- ¿Por qué es importante la sincronización temporal?
- ¿Qué problemas puede causar una diferencia de hora entre Grafana y Prometheus?
Práctica final de preparación¶
Antes de comenzar el siguiente bloque, el alumno debe realizar las siguientes tareas:
- Comprobar la versión de Ubuntu.
- Comprobar la arquitectura.
- Consultar los recursos disponibles.
- Crear el directorio
~/laboratorio-grafana. - Instalar las herramientas básicas.
- Comprobar que puede utilizar
sudo. - Comprobar la conectividad a Internet.
- Revisar los puertos
3000,9090y9100. - Comprobar la sincronización horaria.
- Validar un fichero YAML.
- Ejecutar el script de diagnóstico.
- Guardar el resultado en la carpeta
evidencias.
El resultado esperado es un fichero similar a:
Criterios de finalización¶
El entorno se considera preparado cuando:
- Ubuntu está correctamente identificado.
- El usuario puede utilizar
sudo. - Hay suficiente memoria y almacenamiento.
- La red funciona correctamente.
- Los puertos del laboratorio están disponibles.
- La hora está sincronizada.
- Las herramientas básicas están instaladas.
- El fichero YAML de prueba es válido.
- No existen servicios críticos en estado
failed. - El script de comprobación se ejecuta sin errores importantes.
Una vez completadas estas comprobaciones, el alumno puede comenzar la instalación y configuración de Grafana, Prometheus y Node Exporter.