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.
- Publicaciones de Prometheus: https://github.com/prometheus/prometheus/releases
- Publicaciones de Node Exporter: https://github.com/prometheus/node_exporter/releases
- Publicaciones de Grafana: https://grafana.com/grafana/download
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- 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
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.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/-/healthyAbre http://<server-ip>:9090 en un navegador para confirmar que la interfaz carga.
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
[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
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
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 systemctl daemon-reload
sudo systemctl enable --now grafana-serverPaso 7: verificar
sudo systemctl status grafana-serverAbre 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
sudo vim /etc/grafana/grafana.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 = httpsPaso 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 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: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