
Un servidor sin monitorización solo avisa de que se ha caído cuando alguien se queja. Con el Node Exporter, cada host expone métricas de Linux; el Prometheus las recopila y las almacena como series temporales para su consulta y alerta. Este guion utiliza paquetes de Ubuntu cuando están disponibles, evita exponer métricas en Internet y valida cada paso antes de continuar.
El diseño: quién recopila y quién expone
Node Exporter escucha en el host monitorizado, normalmente en el puerto 9100. Prometheus, en el servidor central, realiza el scrape HTTP a intervalos regulares; no recibe métricas por push en este escenario. Para pocos servidores, static_configs es la forma canónica de declarar objetivos. Cuando la flota crezca, prefiera el descubrimiento de servicios o archivos de objetivos en lugar de editar la configuración principal en cada máquina.
Instala Node Exporter desde Ubuntu
En Ubuntu, el paquete de la distribución integra servicio, usuario y actualizaciones de seguridad. Esto evita descargar un binario con una versión fija y olvidarlo después. En cada servidor monitorizado:
sudo apt update
sudo apt install -y prometheus-node-exporter
sudo systemctl enable --now prometheus-node-exporter
sudo systemctl status prometheus-node-exporter --no-pager
curl -fsS http://localhost:9100/metrics | head
Si necesita el binario upstream por una función específica, verifique la arquitectura, la firma/checksum y la versión en la página oficial de releases antes de instalarlo. El proyecto recomienda consultar node_exporter --help para los colectores y flags disponibles.
Restringe el puerto 9100
/metrics revela datos del host y no debe quedar abierto a internet. Permita solo la IP o la red del servidor Prometheus. En el ejemplo, sustituya 10.0.0.10 por la IP real de su colector:
sudo ufw allow from 10.0.0.10 to any port 9100 proto tcp
sudo ufw status numbered
En redes sin perímetro confiable, use TLS y autenticación del exporter o una red privada/VPN. La autenticación básica sin TLS expone la contraseña en la red.
Instala Prometheus y añade los destinos
sudo apt update
sudo apt install -y prometheus
sudo systemctl enable --now prometheus
sudo systemctl status prometheus --no-pager
En el servidor de monitorización, añada solo este job a la lista scrape_configs ya existente en /etc/prometheus/prometheus.yml. No sustituya el archivo entero: el paquete suele traer el job del propio Prometheus.
- job_name: linux
scrape_interval: 30s
static_configs:
- targets:
- web1.exemplo.com.br:9100
- db1.exemplo.com.br:9100
labels:
ambiente: producao
Valide la sintaxis antes de reiniciar. Una configuración inválida no debe convertirse en una ventana sin monitorización:
sudo promtool check config /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus
curl -fsS http://localhost:9090/-/ready
Abre http://IP_DO_PROMETHEUS:9090/targets. Los dos objetivos deben aparecer como UP. El endpoint /-/ready devuelve 200 cuando el Prometheus está listo para atender consultas.
Consultas PromQL que responden preguntas reales
# alvo está acessível? 1 = UP, 0 = falhou
up{job="linux"}
# CPU ocupada por host, média dos últimos 5 minutos
100 - (avg by (instance) (rate(node_cpu_seconds_total{job="linux",mode="idle"}[5m])) * 100)
# memória usada, sem contar cache reaproveitável
100 * (1 - node_memory_MemAvailable_bytes{job="linux"} / node_memory_MemTotal_bytes{job="linux"})
# espaço usado em sistemas de arquivos reais
100 * (1 - node_filesystem_avail_bytes{job="linux",fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes{job="linux",fstype!~"tmpfs|overlay"})
node_load1 mide carga, no porcentaje de CPU. Compárelo con la cantidad de CPUs del host antes de concluir que existe saturación. Para contadores, como CPU, use rate(); aplicar rate() en una métrica que ya es un valor instantáneo produce una lectura sin sentido.
Del gráfico a la alerta
Grafana mejora la visualización, pero la alerta debe nacer de una regla con duración y severidad, reenviada por el Alertmanager. Comience por indisponibilidad, disco próximo al límite y presión de memoria; evite alertar en cada pico momentáneo. Para la comparación con monitorización tradicional, vea la historia de Nagios y la historia de Zabbix. Si sus hosts se aprovisionan mediante automatización, utilice también la guía de Ansible para repetir la instalación y las reglas sin configuración manual.
Fuentes: configuración de Prometheus; guía de PromQL; modelo de seguridad; Node Exporter.