Skip to content

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.

Arquitectura

+----------------+   scrapes :9100   +----------------+
|  Node Exporter | <---------------- |   Prometheus   |
|   :9100        |                   |   :9090        |
+----------------+                   +--------+-------+
                                              |
                                              | PromQL queries :9090
                                              v
                                     +----------------+
                                     |    Grafana     |
                                     |   :3000        |
                                     +----------------+
                                              |
                                              v
                                        Browser / user

Requisitos previos

  • Un servidor Debian o Ubuntu con acceso sudo
  • curl y tar instalados
  • Los puertos 9090 (Prometheus), 9100 (Node Exporter) y 3000 (Grafana) abiertos en tu cortafuegos si accedes en remoto

Parte 1: instalar Prometheus

Paso 1: crear el usuario de sistema prometheus

bash
sudo useradd --no-create-home --shell /bin/false prometheus

Paso 2: crear los directorios

bash
sudo mkdir -p /etc/prometheus /var/lib/prometheus

Paso 3: descargar Prometheus

bash
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.gz

Paso 4: instalar los binarios

bash
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/promtool

Paso 5: instalar las plantillas de consola y asignar la propiedad

bash
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/prometheus

Paso 6: crear el fichero de configuración

bash
sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
  scrape_interval: 10s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
EOF

El trabajo de scraping de Node Exporter se añade en la Parte 3, una vez instalado.

Paso 7: crear el servicio de systemd

bash
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.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
EOF

ExecReload 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

bash
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus

Paso 9: verificar

bash
sudo systemctl status prometheus
curl -s http://localhost:9090/-/healthy

Abre http://<server-ip>:9090 en un navegador para confirmar que la interfaz carga.

Limpiar la descarga de Prometheus

bash
rm -rf /tmp/prometheus-3.13.1.linux-amd64*

Parte 2: instalar Node Exporter

Paso 1: crear el usuario de sistema node_exporter

bash
sudo useradd --no-create-home --shell /bin/false node_exporter

Paso 2: descargar Node Exporter

bash
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.gz

Paso 3: instalar el binario

bash
sudo cp node_exporter-1.12.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Paso 4: crear el servicio de systemd

bash
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

[Install]
WantedBy=multi-user.target
EOF

Paso 5: arrancar y habilitar Node Exporter

bash
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

Paso 6: verificar

bash
curl -s http://localhost:9100/metrics | head

Limpiar la descarga de Node Exporter

bash
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

bash
sudo vim /etc/prometheus/prometheus.yml

Añade bajo scrape_configs:

yaml
  - job_name: "node_exporter"
    static_configs:
      - targets: ['localhost:9100']

Paso 2: validar la configuración

bash
promtool check config /etc/prometheus/prometheus.yml

Paso 3: recargar Prometheus

bash
sudo systemctl reload prometheus

Paso 4: comprobar que el target está activo

Abre http://<server-ip>:9090/targets: los trabajos prometheus y node_exporter deberían mostrar State = UP.

Parte 4: instalar Grafana

Método oficial: repositorio APT, de forma que apt-get update mantiene Grafana al día. Fuente: https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/

Paso 1: instalar los requisitos previos

bash
sudo apt-get install -y apt-transport-https wget gnupg

Paso 2: importar la clave GPG

bash
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.asc

Paso 3: añadir el repositorio estable

bash
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Paso 4: actualizar la lista de paquetes

bash
sudo apt-get update

Paso 5: instalar Grafana OSS

bash
sudo apt-get install -y grafana

Paso 6: arrancar y habilitar Grafana

bash
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server

Paso 7: verificar

bash
sudo systemctl status grafana-server

Abre http://<server-ip>: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)

Solo hace falta si vas a poner Grafana detrás de un nombre de dominio con TLS.

Paso 1: editar grafana.ini

bash
sudo vim /etc/grafana/grafana.ini
ini
[server]
http_addr =
http_port = 3000
domain = mysite.com
root_url = https://subdomain.mysite.com:3000
cert_key = /etc/grafana/grafana.key
cert_file = /etc/grafana/grafana.crt
enforce_domain = False
protocol = https

Paso 2: reiniciar Grafana

bash
sudo systemctl restart grafana-server

Paso 3 (opcional): proxy inverso con Nginx

nginx
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://localhost: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 $http_host;
        proxy_pass http://localhost:3000;
    }
}

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:9090

Pulsa 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:

1860

Selecciona 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-server

Recargar configuraciones sin cortes:

bash
sudo systemctl reload prometheus
sudo systemctl restart grafana-server

Por 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

bash
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-reload

Eliminar Node Exporter

bash
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-reload

Eliminar Grafana

bash
sudo systemctl stop grafana-server
sudo apt-get remove -y grafana
sudo rm -i /etc/apt/sources.list.d/grafana.list