Instalar Prometheus, Node Exporter y Grafana en Debian o Ubuntu
Guía paso a paso para montar un stack de monitorización en un servidor Debian/Ubuntu. Las versiones usadas abajo son las estables más recientes en el momento de escribir esto (agosto de 2026): Prometheus 3.13.1, Node Exporter 1.12.1, Grafana 13.1.1. Revisa las páginas de publicación antes de ejecutar nada, por si han salido versiones más nuevas.
Hay tres referencias upstream que conviene tener abiertas al lado de esta guía: la referencia de configuración de Prometheus, la lista de colectores de Node Exporter con lo que cuesta cada uno, y la documentación de instalación de Grafana en Debian.
Arquitectura
+----------------+ scrapes :9100 +----------------+
| Node Exporter | <---------------- | Prometheus |
| :9100 | | :9090 |
+----------------+ +--------+-------+
|
| PromQL queries :9090
v
+----------------+
| Grafana |
| :3000 |
+----------------+
|
v
Browser / userRequisitos previos
- Un servidor Debian o Ubuntu con acceso sudo
curlytarinstalados- Acceso SSH para un túnel. Mantén los puertos 9090, 9100 y 3000 cerrados a internet; los tres servicios escucharán solo en loopback.
Parte 1: instalar Prometheus
Paso 1: crear el usuario de sistema prometheus
sudo useradd --no-create-home --shell /bin/false prometheusPaso 2: crear los directorios
sudo mkdir -p /etc/prometheus /var/lib/prometheusPaso 3: descargar Prometheus
cd /tmp
curl -LO https://github.com/prometheus/prometheus/releases/download/v3.13.1/prometheus-3.13.1.linux-amd64.tar.gz
tar -xvf prometheus-3.13.1.linux-amd64.tar.gzPaso 4: instalar los binarios
sudo cp prometheus-3.13.1.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-3.13.1.linux-amd64/promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtoolPaso 5: instalar las plantillas de consola y asignar la propiedad
sudo cp -r prometheus-3.13.1.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-3.13.1.linux-amd64/console_libraries /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheusPaso 6: crear el fichero de configuración
sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
scrape_interval: 10s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
EOFEl trabajo de scraping de Node Exporter se añade en la Parte 3, una vez instalado.
Paso 7: crear el servicio de systemd
sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \\
--config.file=/etc/prometheus/prometheus.yml \\
--storage.tsdb.path=/var/lib/prometheus \\
--web.listen-address=127.0.0.1:9090 \\
--web.console.templates=/etc/prometheus/consoles \\
--web.console.libraries=/etc/prometheus/console_libraries \\
--storage.tsdb.retention.time=365d
ExecReload=/bin/kill -HUP \$MAINPID
[Install]
WantedBy=multi-user.target
EOFExecReload es lo que hace funcionar systemctl reload prometheus en la Parte 3. Sin él, systemd rechaza la recarga con "Job type reload is not applicable" y tu única salida es un reinicio completo. Fíjate en la barra invertida de \$MAINPID: este heredoc va sin comillas, así que de otro modo el shell expandiría la variable a nada al escribir el fichero.
Paso 8: arrancar y habilitar Prometheus
sudo systemctl daemon-reload
sudo systemctl enable --now prometheusPaso 9: verificar
sudo systemctl status prometheus
curl -s http://localhost:9090/-/healthyDesde tu ordenador, abre un túnel SSH y déjalo funcionando:
ssh -N -L 9090:127.0.0.1:9090 -L 3000:127.0.0.1:3000 user@serverSustituye user@server por tu destino SSH. Abre http://localhost:9090 en el navegador de tu ordenador.
Limpiar la descarga de Prometheus
rm -rf /tmp/prometheus-3.13.1.linux-amd64*Parte 2: instalar Node Exporter
Paso 1: crear el usuario de sistema node_exporter
sudo useradd --no-create-home --shell /bin/false node_exporterPaso 2: descargar Node Exporter
cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.12.1/node_exporter-1.12.1.linux-amd64.tar.gz
tar -xvf node_exporter-1.12.1.linux-amd64.tar.gzPaso 3: instalar el binario
sudo cp node_exporter-1.12.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporterPaso 4: crear el servicio de systemd
sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.listen-address=127.0.0.1:9100
[Install]
WantedBy=multi-user.target
EOFPaso 5: arrancar y habilitar Node Exporter
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporterPaso 6: verificar
curl -s http://localhost:9100/metrics | headLimpiar la descarga de Node Exporter
rm -rf /tmp/node_exporter-1.12.1.linux-amd64*Parte 3: apuntar Prometheus a Node Exporter
Paso 1: añadir el trabajo de scraping
sudo vim /etc/prometheus/prometheus.ymlAñade bajo scrape_configs:
- job_name: "node_exporter"
static_configs:
- targets: ['localhost:9100']Paso 2: validar la configuración
promtool check config /etc/prometheus/prometheus.ymlPaso 3: recargar Prometheus
sudo systemctl reload prometheusPaso 4: comprobar que el target está activo
A través del túnel SSH, abre http://localhost:9090/targets: los trabajos prometheus y node_exporter deberían mostrar State = UP.
Parte 4: instalar Grafana
Método oficial: repositorio APT. apt-get update actualiza las listas de paquetes; apt-get install --only-upgrade grafana instala una actualización disponible. Fuente: https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/
Paso 1: instalar los requisitos previos
sudo apt-get install -y apt-transport-https wget gnupgPaso 2: importar la clave GPG
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.ascPaso 3: añadir el repositorio estable
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.listPaso 4: actualizar la lista de paquetes
sudo apt-get updatePaso 5: instalar Grafana OSS
sudo apt-get install -y grafanaPaso 6: arrancar y habilitar Grafana
sudo mkdir -p /etc/systemd/system/grafana-server.service.d
printf '[Service]\nEnvironment=GF_SERVER_HTTP_ADDR=127.0.0.1\n' | sudo tee /etc/systemd/system/grafana-server.service.d/listen.conf
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl restart grafana-serverPaso 7: verificar
sudo systemctl status grafana-serverA través del túnel SSH, abre http://localhost:3000. Las credenciales por defecto son admin / admin, y se te pedirá cambiarlas en el primer acceso.
Parte 5: configuración opcional de Grafana (dominio propio / HTTPS)
El túnel SSH basta para acceso privado. Para publicar el panel, apunta grafana.example.com al servidor y termina TLS en nginx. Grafana seguirá usando HTTP en loopback; no actives HTTPS en su puerto interno.
Paso 1: editar grafana.ini
sudo vim /etc/grafana/grafana.ini[server]
http_addr = 127.0.0.1
http_port = 3000
domain = grafana.example.com
root_url = https://grafana.example.com/
enforce_domain = true
protocol = httpPaso 2: reiniciar Grafana
sudo systemctl restart grafana-serverPaso 3 (opcional): proxy inverso con Nginx
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name grafana.example.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3000;
}
location /api/live {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3000;
}
}Instala nginx y Certbot, y guarda la configuración anterior en /etc/nginx/sites-available/grafana.example.com. Sustituye el dominio de ejemplo en todos los pasos:
sudo apt-get install -y nginx certbot python3-certbot-nginx
sudo ln -s /etc/nginx/sites-available/grafana.example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d grafana.example.com
sudo certbot renew --dry-runAbre los puertos 80 y 443 para nginx, no el 3000. Certbot configura TLS y el temporizador de renovación. Mantén la autenticación de Grafana y cambia la contraseña inicial a través del túnel SSH antes de publicar el dominio.
Parte 6: conectar Grafana con Prometheus
Paso 1: añadir la fuente de datos
En Grafana: Connections > Data sources > Add data source > Prometheus.
Pon como URL:
http://localhost:9090Pulsa Save & test y deberías ver "Successfully queried the Prometheus API."
Paso 2: importar el panel de Node Exporter
Dashboards > New > Import, e introduce el ID del panel:
1860Selecciona tu fuente de datos Prometheus cuando te lo pida y pulsa Import. Es el panel comunitario "Node Exporter Full" y cubre CPU, memoria, disco y red desde el primer momento.
Chuleta de gestión de servicios
service start status enable
--------------- -------------------- -------------------- -------------------------------
prometheus systemctl start systemctl status systemctl enable prometheus
node_exporter systemctl start systemctl status systemctl enable node_exporter
grafana-server systemctl start systemctl status systemctl enable grafana-serverRecargar configuraciones sin cortes:
sudo systemctl reload prometheus
sudo systemctl restart grafana-serverPor dónde seguir
Un servidor es donde esto empieza, no donde acaba. Los dos pasos siguientes suelen ser las alertas (Alertmanager, para que un disco lleno te avise a las 3 de la madrugada en vez de sorprenderte a las 9) y un segundo exporter para lo que realmente corra en la máquina. Si esa máquina es un sitio web, autoalojar WordPress con Docker y Redis es la otra mitad del mismo montaje.
La monitorización a mayor escala es buena parte de mi trabajo: observabilidad con Grafana y Prometheus, incluido un banco de pruebas que lanzó diez millones de peticiones en quince minutos. Encantado de comentarlo contigo.
Desinstalar
Eliminar Prometheus
sudo systemctl disable --now prometheus
sudo rm -f /usr/local/bin/prometheus /usr/local/bin/promtool
sudo rm -rf /etc/prometheus /var/lib/prometheus /etc/systemd/system/prometheus.service
sudo userdel prometheus
sudo systemctl daemon-reloadEliminar Node Exporter
sudo systemctl disable --now node_exporter
sudo rm -f /usr/local/bin/node_exporter /etc/systemd/system/node_exporter.service
sudo userdel node_exporter
sudo systemctl daemon-reloadEliminar Grafana
sudo systemctl stop grafana-server
sudo apt-get remove -y grafana
sudo rm -i /etc/apt/sources.list.d/grafana.list