Problemas con Node Exporter¶
Esta página explica cómo diagnosticar y resolver los problemas más habituales de Node Exporter en un entorno Linux con Prometheus y Grafana.
Node Exporter expone métricas del sistema operativo para que Prometheus pueda recopilarlas. Cuando deja de funcionar, Prometheus suele mostrar el target como DOWN y las consultas de Grafana pueden quedarse sin datos.
El flujo de monitorización es:
Un problema puede aparecer en cualquiera de estos puntos:
- El binario no está instalado.
- La arquitectura del binario es incorrecta.
- El servicio no existe.
- El servicio está detenido.
- El puerto
9100está ocupado. - El endpoint
/metricsno responde. - El firewall bloquea el acceso.
- El usuario del servicio no tiene permisos.
- Prometheus apunta a una dirección incorrecta.
- El target aparece como
DOWN. - Las métricas no se exponen como se esperaba.
- El sistema tiene poco espacio o poca memoria.
Advertencia: realiza las prácticas en una máquina virtual o en un entorno de laboratorio. Antes de modificar la unidad de
systemd, crea una copia de seguridad y documenta el estado inicial.
Objetivos¶
Al finalizar esta sesión, el alumno podrá:
- Explicar la función de Node Exporter.
- Comprobar si Node Exporter está instalado.
- Consultar la versión del binario.
- Comprobar la arquitectura del sistema.
- Verificar el estado del servicio.
- Consultar los registros de
systemd. - Comprobar el puerto
9100. - Probar el endpoint
/metrics. - Diagnosticar problemas de permisos.
- Diagnosticar problemas de usuario y grupo.
- Identificar errores de arquitectura.
- Detectar conflictos de puertos.
- Comprobar la conectividad desde Prometheus.
- Diagnosticar un target
DOWN. - Comprobar la configuración de collectors.
- Validar la recuperación del servicio.
- Documentar una incidencia técnica.
Introducción¶
Node Exporter es un exporter que expone métricas relacionadas con el sistema operativo.
Entre las métricas más habituales se encuentran:
node_cpu_seconds_total
node_memory_MemTotal_bytes
node_memory_MemAvailable_bytes
node_filesystem_size_bytes
node_filesystem_avail_bytes
node_network_receive_bytes_total
node_network_transmit_bytes_total
node_load1
node_uname_info
Node Exporter no almacena las métricas. Su función es exponerlas mediante HTTP. Prometheus se encarga de consultarlas y almacenarlas.
La dirección habitual del endpoint es:
Una configuración típica de Prometheus contiene:
Si Node Exporter no responde, Prometheus no podrá recopilar las métricas.
Funcionamiento de Node Exporter¶
Proceso de exposición¶
Node Exporter realiza las siguientes tareas:
- Lee información del sistema operativo.
- Activa los collectors configurados.
- Convierte la información en métricas Prometheus.
- Escucha peticiones HTTP.
- Devuelve las métricas en
/metrics.
Puerto habitual¶
El puerto por defecto es:
Endpoint principal¶
Comprobación básica¶
Consultar las primeras métricas:
Consultar métricas de CPU:
Consultar métricas de memoria:
Consultar métricas de sistemas de archivos:
Identificar el método de instalación¶
El diagnóstico depende de cómo se haya instalado Node Exporter.
Instalación mediante paquete¶
Comprueba los paquetes instalados:
Consulta la política del paquete:
El nombre del paquete puede variar según la distribución.
Instalación mediante binario¶
Busca el ejecutable:
Busca en rutas habituales:
Instalación mediante contenedor¶
Consulta los contenedores:
Filtra por nombre:
Consulta los registros:
Comprobar el servicio utilizado¶
El nombre habitual es:
Pero algunas distribuciones utilizan:
Comprueba las unidades disponibles:
También:
Comprobar la instalación¶
Localizar el ejecutable¶
Si no aparece ninguna ruta, prueba:
Consultar la versión¶
Si el binario está en otra ruta:
Consultar el tipo de binario¶
Una salida posible:
Consultar la arquitectura del sistema¶
Resultados habituales:
Comparar arquitecturas¶
El binario y el sistema deben ser compatibles.
Ejemplo:
Ejemplo de problema:
Comprobar el servicio¶
Consultar el estado¶
Si el servicio se llama node_exporter:
Si se llama prometheus-node-exporter:
Comprobar si está activo¶
Resultado esperado:
Comprobar si se inicia automáticamente¶
Resultado esperado:
Iniciar Node Exporter¶
Reiniciar Node Exporter¶
Detener Node Exporter¶
Activar el inicio automático¶
Activar e iniciar simultáneamente:
Recargar las unidades de systemd¶
Si se ha creado o modificado una unidad:
Después:
Consultar la unidad de systemd¶
Mostrar la unidad¶
Consultar la ruta de la unidad¶
Consultar el comando de inicio¶
Consultar el usuario y el grupo¶
Consultar todas las propiedades importantes¶
systemctl show node_exporter \
-p User \
-p Group \
-p ExecStart \
-p FragmentPath \
-p WorkingDirectory \
-p Restart
Ejemplo de unidad¶
Una unidad de ejemplo puede tener esta estructura:
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
La ubicación real puede variar:
Consultar los registros¶
Últimas líneas¶
Registros desde el último arranque¶
Seguir los registros en tiempo real¶
Detener la salida:
Consultar únicamente errores¶
Buscar mensajes relevantes¶
sudo journalctl -u node_exporter \
--no-pager \
| grep -i -E \
"error|failed|fatal|permission|denied|address|listen"
Consultar los registros del último arranque¶
Comprobar el puerto 9100¶
Utilizar ss¶
Una salida correcta puede ser:
Utilizar lsof¶
Utilizar fuser¶
Identificar el proceso¶
Si el PID es 1234:
Consultar el comando completo:
Interpretar la dirección de escucha¶
127.0.0.1:9100¶
Node Exporter solo acepta conexiones locales:
Prometheus debe ejecutarse en el mismo equipo para acceder directamente.
0.0.0.0:9100¶
Node Exporter acepta conexiones IPv4 en las interfaces disponibles:
El firewall debe seguir limitando los orígenes permitidos.
[::]:9100¶
Node Exporter escucha mediante IPv6:
La accesibilidad dependerá de la configuración IPv6 y del firewall.
Probar el endpoint /metrics¶
Comprobar las cabeceras¶
Resultado esperado:
Consultar el endpoint completo¶
Consultar solo las primeras líneas¶
Comprobar el código HTTP¶
Buscar una métrica concreta¶
Consultar la información del sistema¶
Consultar las métricas expuestas¶
curl -s http://localhost:9100/metrics \
| grep "^node_" \
| cut -d' ' -f1 \
| sed 's/{.*//' \
| sort -u \
| head -50
Problemas de conexión local¶
El endpoint devuelve Connection refused¶
Comprueba:
Posibles causas:
- El servicio está detenido.
- Node Exporter no está instalado.
- El puerto configurado no es
9100. - El proceso se ha detenido.
- Existe un error en los parámetros de inicio.
El endpoint devuelve Connection timed out¶
Comprueba:
Si la petición se realiza desde otro equipo:
Posibles causas:
- Firewall.
- Ruta de red incorrecta.
- Dirección IP incorrecta.
- Node Exporter escucha solo en
localhost. - El equipo no está disponible.
El endpoint devuelve 404 Not Found¶
Comprueba que se utiliza la ruta correcta:
Consulta:
No utilices una ruta incorrecta como:
El endpoint devuelve contenido vacío¶
Comprueba:
Consulta los registros:
Revisa los collectors habilitados y deshabilitados.
Problemas de permisos¶
Consultar el usuario del servicio¶
Comprobar si el usuario existe¶
Comprobar permisos del binario¶
Comprobar si es ejecutable¶
test -x /usr/local/bin/node_exporter \
&& echo "El binario es ejecutable" \
|| echo "El binario no es ejecutable"
Dar permiso de ejecución¶
Solo si corresponde:
Comprobar ejecución como usuario del servicio¶
Error Permission denied¶
Comprueba:
Posibles causas:
- Falta el permiso de ejecución.
- Algún directorio de la ruta no permite el acceso.
- El sistema de archivos está montado con
noexec. - El usuario no puede acceder al binario.
- Existe una política de seguridad que bloquea la ejecución.
Comprobar si el sistema de archivos utiliza noexec¶
Problemas de usuario y grupo¶
Crear un usuario de sistema¶
Solo si la instalación lo requiere:
Comprobar el usuario¶
Consultar la unidad¶
Comprueba que estas líneas correspondan a un usuario existente:
Error de usuario inexistente¶
Un mensaje como:
puede indicar que el usuario definido en la unidad no existe.
Comprueba:
Si no existe, revisa el procedimiento de instalación antes de crearlo manualmente.
Probar el servicio con el usuario configurado¶
Detén el proceso con:
Problemas de arquitectura¶
Consultar la arquitectura del sistema¶
Consultar la arquitectura del binario¶
Error Exec format error¶
Este error suele indicar que el binario no es compatible con la arquitectura del sistema.
Comprueba:
Ejemplos de correspondencia¶
| Sistema | Binario compatible habitual |
|---|---|
x86_64 |
linux-amd64 |
aarch64 |
linux-arm64 |
armv7l |
linux-armv7 |
Consulta siempre los nombres exactos publicados por la versión utilizada.
Problemas de descargas¶
Comprobar el fichero descargado¶
Comprobar el tamaño¶
Consultar el contenido antes de extraer¶
Comprobar la suma SHA-256¶
Compara el resultado con la suma publicada por el proyecto.
Error: no es un archivo gzip¶
Si aparece:
comprueba:
Si muestra:
se ha descargado probablemente una página web o un mensaje de error.
Descargar mediante curl¶
Después:
Problemas de configuración del servicio¶
Consultar los argumentos de inicio¶
Parámetros habituales¶
Algunos parámetros frecuentes son:
--web.listen-address=:9100
--web.telemetry-path=/metrics
--collector.systemd
--collector.processes
--no-collector.wifi
La disponibilidad de collectors y opciones depende de la versión instalada.
Cambiar la dirección de escucha¶
Ejemplo:
Cambiar el endpoint de métricas¶
Ejemplo:
Si se modifica esta ruta, Prometheus debe utilizar la misma ruta mediante la configuración de scraping.
Consultar la ayuda¶
Si está instalado en otra ruta:
Validar una unidad de systemd¶
Recargar y reiniciar¶
Comprobar el resultado¶
Problemas con collectors¶
Los collectors son componentes que recopilan grupos concretos de métricas.
Consultar collectors en la ayuda¶
Buscar collectors en las métricas¶
Comprobar métricas del sistema de archivos¶
Comprobar métricas de red¶
Comprobar métricas de systemd¶
Si el collector está habilitado:
Problemas habituales¶
- El collector no está habilitado.
- El collector no es compatible con la versión.
- El usuario no tiene permisos para leer la información.
- El sistema no dispone del recurso consultado.
- El nombre de la métrica no coincide con el esperado.
- El collector genera errores durante el scraping.
Consultar errores del exporter¶
Problemas de firewall¶
Consultar UFW¶
Permitir Node Exporter desde Prometheus¶
Sustituye la dirección por la del servidor Prometheus:
Consultar las reglas¶
Comprobar desde Prometheus¶
No abrir el puerto globalmente sin necesidad¶
Evita utilizar como primera opción:
Es preferible permitir únicamente el origen necesario.
Problemas de red y DNS¶
Consultar interfaces¶
Consultar rutas¶
Probar conectividad¶
Probar resolución DNS¶
Probar por nombre¶
Probar por IP¶
Si funciona por IP, pero no por nombre, revisa:
- DNS.
/etc/hosts.- El nombre del target.
- La configuración de red.
- La resolución desde el servidor Prometheus.
Configuración de Prometheus para Node Exporter¶
Configuración local¶
Configuración mediante IP¶
Configuración mediante nombre DNS¶
scrape_configs:
- job_name: node_exporter
static_configs:
- targets:
- node-exporter.ejemplo.local:9100
Configuración con etiquetas¶
scrape_configs:
- job_name: node_exporter
static_configs:
- targets:
- 192.168.1.50:9100
labels:
entorno: laboratorio
ubicacion: aula-01
Consulta:
Validar la configuración¶
Reiniciar Prometheus¶
Comprobar el target¶
Diagnosticar un target DOWN¶
Consultar el estado¶
curl -s http://localhost:9090/api/v1/targets \
| jq '.data.activeTargets[] | {
job: .labels.job,
instance: .labels.instance,
health: .health,
lastError: .lastError,
lastScrape: .lastScrape
}'
Comprobar la consulta up¶
Comprobar el servicio en el target¶
Comprobar el puerto en el target¶
Probar desde el servidor Prometheus¶
Revisar el error mostrado por Prometheus¶
El campo lastError puede mostrar mensajes como:
Interpretación de errores¶
| Error | Posible causa |
|---|---|
connection refused |
Servicio detenido o puerto incorrecto |
context deadline exceeded |
Firewall, red lenta o servicio bloqueado |
no route to host |
Ruta de red inexistente |
server returned 404 |
Ruta de métricas incorrecta |
could not resolve host |
Problema DNS |
permission denied |
Permisos del proceso o del sistema |
Consultas PromQL para validar Node Exporter¶
Comprobar disponibilidad¶
Consultar la carga del sistema¶
Consultar memoria total¶
Consultar memoria disponible¶
Calcular porcentaje de memoria utilizada¶
100 * (
1 -
node_memory_MemAvailable_bytes{
job="node_exporter"
}
/
node_memory_MemTotal_bytes{
job="node_exporter"
}
)
Consultar CPU en modo idle¶
Calcular uso de CPU¶
100 * (
1 -
avg by (instance) (
rate(
node_cpu_seconds_total{
job="node_exporter",
mode="idle"
}[5m]
)
)
)
Consultar el tamaño del sistema de archivos¶
Calcular porcentaje utilizado de /¶
100 * (
1 -
node_filesystem_avail_bytes{
job="node_exporter",
mountpoint="/",
fstype!~"tmpfs|overlay|squashfs"
}
/
node_filesystem_size_bytes{
job="node_exporter",
mountpoint="/",
fstype!~"tmpfs|overlay|squashfs"
}
)
Sesión práctica 1: inventario inicial¶
Objetivo¶
Recopilar información del sistema y de Node Exporter antes de modificar nada.
Crear el directorio de trabajo¶
Generar un inventario¶
{
echo "===== INVENTARIO DE NODE EXPORTER ====="
echo "Fecha: $(date)"
echo "Equipo: $(hostname)"
echo
echo "===== SISTEMA ====="
lsb_release -ds 2>/dev/null || true
uname -m
uname -r
echo
echo "===== BINARIO ====="
command -v node_exporter || true
node_exporter --version 2>&1 || true
echo
echo "===== USUARIO ====="
getent passwd node_exporter || true
getent group node_exporter || true
echo
echo "===== SERVICIO ====="
systemctl is-active node_exporter 2>/dev/null || true
systemctl is-enabled node_exporter 2>/dev/null || true
echo
echo "===== PUERTO ====="
sudo ss -lntp | grep ':9100' || true
echo
echo "===== ENDPOINT ====="
curl -sS -o /dev/null \
-w "Código HTTP: %{http_code}\nTiempo: %{time_total}s\n" \
--max-time 5 \
http://localhost:9100/metrics \
|| true
echo
echo "===== ESPACIO ====="
df -h
} | tee inventario-node-exporter.txt
Revisar el informe¶
Preguntas de análisis¶
- ¿Existe el binario?
- ¿Qué versión está instalada?
- ¿Existe el usuario del servicio?
- ¿Está activo el servicio?
- ¿El puerto
9100está en escucha? - ¿El endpoint devuelve un código
200? - ¿Hay espacio suficiente?
Sesión práctica 2: Node Exporter está detenido¶
Objetivo¶
Detectar y recuperar un servicio detenido.
Comprobar el estado¶
Consultar el estado detallado¶
Consultar los registros¶
Comprobar el puerto¶
Iniciar el servicio¶
Validar¶
Comprobar desde Prometheus¶
Preguntas de análisis¶
- ¿Cuál era el estado inicial?
- ¿El servicio se inició correctamente?
- ¿El puerto comenzó a estar en escucha?
- ¿El endpoint devolvió
200 OK? - ¿Cuánto tardó Prometheus en mostrar el target como
UP?
Sesión práctica 3: diagnosticar un error de arquitectura¶
Objetivo¶
Identificar un binario incompatible con el sistema.
Consultar la arquitectura¶
Consultar el binario¶
Intentar consultar la versión¶
Consultar el registro del servicio¶
Identificar el error¶
Busca mensajes como:
o:
Documentar la comparación¶
Validación¶
El binario correcto debe:
y ejecutarse correctamente:
Sesión práctica 4: resolver un conflicto de puerto¶
Objetivo¶
Identificar qué proceso utiliza el puerto 9100.
Comprobar el puerto¶
Identificar el proceso¶
Consultar el proceso¶
Comprobar procesos duplicados¶
Comprobar unidades duplicadas¶
Analizar las opciones¶
Determina si:
- Existe una segunda instancia.
- Se ha ejecutado Node Exporter manualmente.
- Otra aplicación utiliza el puerto.
- Hay una instalación antigua.
- El servicio utiliza un puerto diferente.
Recuperar el servicio¶
Después de resolver el conflicto:
Validar¶
Sesión práctica 5: diagnosticar permisos del binario¶
Objetivo¶
Comprobar cómo los permisos de ejecución afectan al servicio.
Realiza esta práctica únicamente en una máquina virtual o entorno de laboratorio.
Consultar los permisos originales¶
Crear una copia del binario¶
Retirar temporalmente el permiso de ejecución¶
Reiniciar el servicio¶
Consultar el estado¶
Consultar los registros¶
Restaurar el permiso¶
Validar¶
Preguntas de análisis¶
- ¿Qué permiso se eliminó?
- ¿Qué mensaje mostró
systemd? - ¿El usuario del servicio podía ejecutar el binario?
- ¿Qué permiso permitió recuperar el servicio?
Sesión práctica 6: comprobar un target remoto¶
Objetivo¶
Diagnosticar la comunicación entre Prometheus y Node Exporter en equipos diferentes.
Escenario¶
Servidor Prometheus:
Servidor Node Exporter:
Probar desde Prometheus¶
Comprobar Node Exporter en el servidor remoto¶
Comprobar el firewall remoto¶
Permitir únicamente el servidor Prometheus:
Configurar el target¶
En Prometheus:
Validar la configuración¶
Reiniciar Prometheus¶
Consultar el estado¶
Preguntas de análisis¶
- ¿El servidor Prometheus podía resolver la dirección?
- ¿El puerto
9100estaba accesible? - ¿El firewall permitía el origen correcto?
- ¿El target remoto aparece como
UP? - ¿Qué diferencia existe entre una prueba local y una prueba desde Prometheus?
Sesión práctica 7: comprobar collectors¶
Objetivo¶
Identificar qué grupos de métricas están disponibles.
Consultar métricas de CPU¶
Consultar métricas de memoria¶
Consultar métricas de red¶
Consultar métricas de disco¶
Consultar métricas de filesystem¶
Crear un inventario de métricas¶
curl -s http://localhost:9100/metrics \
| grep "^node_" \
| sed 's/{.*//' \
| sed 's/ .*//' \
| sort -u \
| tee metricas-node-exporter.txt
Analizar el resultado¶
Indica si existen métricas para:
Sesión práctica 8: verificar Prometheus después de recuperar Node Exporter¶
Objetivo¶
Observar el ciclo completo de recuperación.
Detener Node Exporter¶
Consultar el endpoint¶
La petición debería fallar mientras el servicio esté detenido.
Consultar Prometheus¶
Después de uno o varios intervalos de scraping, el valor debería cambiar a:
Consultar el target¶
curl -s http://localhost:9090/api/v1/targets \
| jq '.data.activeTargets[] | {
instance: .labels.instance,
health: .health,
lastError: .lastError
}'
Iniciar Node Exporter¶
Comprobar el endpoint¶
Consultar Prometheus de nuevo¶
El valor debería volver a:
Preguntas de análisis¶
- ¿Cuánto tardó el target en pasar a
DOWN? - ¿Qué error apareció en
lastError? - ¿Cuánto tardó en recuperarse?
- ¿Qué diferencia hay entre el estado del servicio y el estado del target?
- ¿Qué intervalo de scraping estaba configurado?
Sesión práctica 9: construir un informe de diagnóstico¶
Objetivo¶
Documentar una incidencia completa de Node Exporter.
Crear el directorio¶
Generar el informe¶
{
echo "===== INFORME DE NODE EXPORTER ====="
echo "Fecha: $(date)"
echo "Equipo: $(hostname)"
echo
echo "===== SISTEMA ====="
lsb_release -ds 2>/dev/null || true
uname -m
uname -r
echo
echo "===== VERSION ====="
node_exporter --version 2>&1 || true
echo
echo "===== SERVICIO ====="
systemctl is-active node_exporter 2>/dev/null || true
systemctl is-enabled node_exporter 2>/dev/null || true
echo
echo "===== UNIDAD ====="
systemctl show node_exporter \
-p User \
-p Group \
-p ExecStart \
-p FragmentPath
echo
echo "===== PROCESO ====="
ps aux | grep "[n]ode_exporter" || true
echo
echo "===== PUERTO ====="
sudo ss -lntp | grep ':9100' || true
echo
echo "===== ENDPOINT ====="
curl -sS \
-o /dev/null \
-w "Código HTTP: %{http_code}\nTiempo: %{time_total}s\n" \
--max-time 5 \
http://localhost:9100/metrics \
|| true
echo
echo "===== METRICAS ====="
curl -sS \
--max-time 5 \
http://localhost:9100/metrics \
| grep -E "^node_(cpu|memory|load|filesystem)_" \
| head -20 \
|| true
echo
echo "===== ESPACIO ====="
df -h
echo
echo "===== REGISTROS ====="
sudo journalctl -u node_exporter \
-n 50 \
--no-pager
} | tee informe-node-exporter.txt
Revisar el informe¶
Diagnóstico automatizado¶
Crear un script¶
Contenido:
#!/usr/bin/env bash
set -u
echo "===== DIAGNÓSTICO DE NODE EXPORTER ====="
echo "Fecha: $(date)"
echo "Equipo: $(hostname)"
echo
echo "===== SISTEMA ====="
uname -m
uname -r
echo
echo "===== BINARIO ====="
command -v node_exporter || true
node_exporter --version 2>&1 || true
echo
echo "===== USUARIO ====="
getent passwd node_exporter || true
getent group node_exporter || true
echo
echo "===== SERVICIO ====="
systemctl is-active node_exporter 2>/dev/null || true
systemctl is-enabled node_exporter 2>/dev/null || true
echo
echo "===== PROCESO ====="
ps aux | grep "[n]ode_exporter" || true
echo
echo "===== PUERTO 9100 ====="
sudo ss -lntp | grep ':9100' || true
echo
echo "===== ENDPOINT ====="
curl -sS -o /dev/null \
-w "Código HTTP: %{http_code}\nTiempo: %{time_total}s\n" \
--max-time 5 \
http://localhost:9100/metrics \
|| true
echo
echo "===== METRICAS ====="
curl -sS \
--max-time 5 \
http://localhost:9100/metrics \
| grep "^node_" \
| head -20 \
|| true
echo
echo "===== ESPACIO ====="
df -h
echo
echo "===== REGISTROS ====="
sudo journalctl -u node_exporter \
-n 30 \
--no-pager \
2>/dev/null || true
Conceder permisos¶
Ejecutar el script¶
Guardar la salida¶
Lista de comprobación rápida¶
[ ] Node Exporter está instalado.
[ ] El binario existe.
[ ] La arquitectura es compatible.
[ ] El binario es ejecutable.
[ ] La versión se puede consultar.
[ ] El usuario del servicio existe.
[ ] El grupo del servicio existe.
[ ] La unidad systemd existe.
[ ] El servicio está activo.
[ ] El servicio se inicia automáticamente.
[ ] El puerto 9100 está en escucha.
[ ] La dirección de escucha es correcta.
[ ] El endpoint /metrics responde.
[ ] Las métricas node_* aparecen.
[ ] El firewall permite el acceso necesario.
[ ] Prometheus puede alcanzar el endpoint.
[ ] El target aparece como UP.
[ ] La consulta up devuelve 1.
[ ] No hay errores relevantes en los registros.
Tabla de síntomas y comprobaciones¶
| Síntoma | Primera comprobación | Comprobación adicional |
|---|---|---|
| El comando no existe | command -v node_exporter |
Buscar el binario |
| El servicio no existe | systemctl list-unit-files |
Revisar el método de instalación |
| El servicio está detenido | systemctl status |
Consultar journalctl |
Exec format error |
uname -m y file |
Descargar la arquitectura correcta |
Permission denied |
ls -l |
Revisar usuario y ruta |
Connection refused |
ss -lntp |
Estado del servicio |
Connection timed out |
ufw y nc |
Rutas y firewall |
| Puerto ocupado | ss o lsof |
Procesos duplicados |
Endpoint 404 |
URL utilizada | Parámetro --web.telemetry-path |
Target DOWN |
API de targets | Endpoint desde Prometheus |
| Métricas ausentes | curl /metrics |
Collectors y versión |
| Grafana sin datos | Fuente de datos | Consulta up |
| Servicio activo sin métricas | curl /metrics |
Registros y collectors |
Buenas prácticas¶
- Comprueba la versión y la arquitectura antes de instalar.
- Descarga Node Exporter desde una fuente fiable.
- Verifica la suma de comprobación del archivo.
- Utiliza un usuario de sistema sin acceso interactivo.
- No ejecutes Node Exporter como
rootsin una razón justificada. - Protege el puerto
9100mediante el firewall. - Permite el acceso únicamente desde los servidores Prometheus necesarios.
- Comprueba el endpoint local antes de diagnosticar Prometheus.
- Prueba el endpoint desde el servidor Prometheus.
- No confundas
localhostcon otro equipo. - Consulta los registros antes de realizar cambios.
- Crea una copia de seguridad de la unidad antes de modificarla.
- Ejecuta
systemctl daemon-reloaddespués de cambiar una unidad. - Valida el servicio después de cada modificación.
- Controla el espacio disponible del sistema.
- No utilices permisos
777. - No borres datos o binarios como primera medida.
- Documenta el estado inicial y el resultado final.
- Utiliza PromQL para verificar que las métricas se almacenan.
- Comprueba tanto el servicio como el target de Prometheus.
Puntos clave¶
- Node Exporter expone métricas del sistema operativo.
- El puerto habitual es
9100. - El endpoint principal es
/metrics. - Node Exporter no almacena las métricas.
- Prometheus consulta y almacena las métricas expuestas.
systemctl status node_exportermuestra el estado del servicio.journalctl -u node_exportermuestra los registros.ss -lntppermite comprobar el puerto y el proceso.curlpermite probar el endpoint sin utilizar el navegador.fileyuname -mpermiten comprobar la compatibilidad de arquitectura.127.0.0.1solo acepta conexiones locales.- Un target remoto requiere conectividad y reglas de firewall adecuadas.
- Un target
DOWNdebe investigarse desde el servidor Prometheus. - El usuario del servicio debe poder ejecutar el binario.
- Los collectors determinan qué grupos de métricas se exponen.
- Un servicio activo no garantiza que el endpoint funcione.
- Prometheus debe poder acceder al endpoint
/metrics. - La consulta
uppermite comprobar la disponibilidad del target. - Las configuraciones y unidades deben respaldarse antes de modificarse.
- Toda incidencia debe registrar síntoma, pruebas, causa, solución y validación.
Preguntas de comprobación¶
- ¿Qué función cumple Node Exporter?
- ¿Cuál es el puerto habitual de Node Exporter?
- ¿Qué endpoint expone las métricas?
- ¿Qué diferencia existe entre Node Exporter y Prometheus?
- ¿Qué comando permite comprobar si el servicio está activo?
- ¿Qué comando permite consultar los registros del servicio?
- ¿Qué comando permite comprobar si el puerto
9100está en escucha? - ¿Qué significa que Node Exporter escuche en
127.0.0.1:9100? - ¿Qué diferencia existe entre
Connection refusedyConnection timed out? - ¿Cómo comprobarías si el binario es compatible con la arquitectura del sistema?
- ¿Qué puede provocar un error
Exec format error? - ¿Qué comprobarías ante un error
Permission denied? - ¿Cómo comprobarías que el usuario
node_exporterexiste? - ¿Qué comprobarías si el puerto
9100está ocupado? - ¿Qué pasos seguirías para diagnosticar un target
DOWN? - ¿Por qué debes probar el endpoint desde el servidor Prometheus?
- ¿Qué función cumplen los collectors?
- ¿Qué consulta PromQL permite comprobar la disponibilidad de Node Exporter?
- ¿Qué diferencias existen entre el estado del servicio y el estado del target?
- ¿Qué información debe incluir un informe de una incidencia de Node Exporter?