Configuración de Node Exporter

DockerBeginner
Practicar Ahora

Introducción

Este laboratorio amplía tu monitorización a un servicio externo. Configurarás Node Exporter, un exportador de Prometheus para métricas de hardware y del sistema operativo. La configuración proporcionará un contenedor de Prometheus en ejecución del laboratorio anterior. Ejecutarás un contenedor de Node Exporter y lo añadirás como un nuevo objetivo en tu prometheus.yml. Al final de este laboratorio, podrás consultar métricas del sistema a nivel de host dentro de la interfaz de usuario de Prometheus.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 95%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Descargar la Imagen Docker de Node Exporter

En este paso, descargarás la imagen oficial de Docker para Node Exporter. Node Exporter es un exportador de Prometheus que expone una amplia variedad de métricas relacionadas con el hardware y el kernel de la máquina host.

Para empezar, descarga la imagen prom/node-exporter de Docker Hub. Abre una terminal y ejecuta el siguiente comando:

docker pull prom/node-exporter

Este comando contacta el registro de Docker Hub y descarga la última versión de la imagen de Node Exporter a tu máquina local. Verás una salida que muestra el progreso de descarga de cada capa de la imagen.

Salida esperada:

Using default tag: latest
latest: Pulling from prom/node-exporter
Digest: sha256:a5579e72377a6053359058893b80f4f47c55d761457d685343b8e797859a159b
Status: Image is up to date for prom/node-exporter
docker.io/prom/node-exporter

Ejecutar Contenedor de Node Exporter en el Puerto 9100

Ahora que tienes la imagen, ejecutemos Node Exporter como un contenedor. Expondremos sus métricas en el puerto 9100, que es el puerto por defecto para Node Exporter.

Ejecuta el siguiente comando para iniciar el contenedor y colocarlo en la misma red Docker que Prometheus:

docker run -d -p 9100:9100 --name node-exporter --network monitoring prom/node-exporter

Analicemos este comando:

  • -d: Ejecuta el contenedor en modo "detached" (separado), lo que significa que se ejecuta en segundo plano.
  • -p 9100:9100: Mapea el puerto 9100 del host al puerto 9100 del contenedor.
  • --name node-exporter: Asigna un nombre fácil de recordar al contenedor para una fácil referencia.
  • prom/node-exporter: La imagen a utilizar para crear el contenedor.

Puedes verificar que el contenedor se está ejecutando con el comando docker ps:

docker ps

Deberías ver node-exporter en la lista de contenedores en ejecución. Opcionalmente, confirma la conexión a la red con:

docker inspect node-exporter --format '{{.HostConfig.NetworkMode}}'

La salida debería ser monitoring.

Salida esperada:

CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                       NAMES
...            prom/node-exporter     "/bin/node_exporter"     A few seconds ago   Up a few seconds   0.0.0.0:9100->9100/tcp, :::9100->9100/tcp   node-exporter
...            prom/prometheus        "/bin/prometheus --c…"   About a minute ago   Up about a minute   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   prometheus

Actualizar prometheus.yml para Añadir el Objetivo de Node Exporter

En este paso, configurarás Prometheus para obtener métricas del contenedor de Node Exporter que se está ejecutando. Esto se hace editando el archivo de configuración prometheus.yml para añadir un nuevo trabajo de obtención (scrape job).

Primero, abre el archivo prometheus.yml ubicado en tu directorio de proyecto usando el editor nano:

nano ~/project/prometheus.yml

Ahora, añade una nueva configuración de trabajo para Node Exporter bajo la sección scrape_configs. Tu archivo final debería verse así. Asegúrate de que la indentación sea correcta, ya que YAML es sensible a ella.

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["prometheus:9090"]

  - job_name: "node_exporter"
    static_configs:
      - targets: ["node-exporter:9100"]

Esto es lo que hace el nuevo bloque:

  • job_name: 'node_exporter': Le da un nombre a este trabajo de obtención, que se utilizará para etiquetar las métricas recopiladas.
  • targets: ['node-exporter:9100']: Indica a Prometheus dónde encontrar Node Exporter. Usamos el nombre del contenedor porque Docker proporciona resolución DNS interna entre contenedores en la misma red. El nombre de host localhost está limitado a cada contenedor, por lo que no se puede usar para alcanzar otros contenedores.

Después de editar, guarda el archivo y sal de nano presionando Ctrl+X, luego Y, y finalmente Enter.

Reiniciar el Contenedor de Prometheus con la Configuración Actualizada

Para que Prometheus cargue la nueva configuración, necesitas reiniciar su contenedor. El montaje de volumen que configuramos anteriormente asegura que el contenedor verá el archivo prometheus.yml actualizado al reiniciarse.

Ejecuta el siguiente comando para reiniciar el contenedor de Prometheus:

docker restart prometheus

Este comando detiene y luego inicia el contenedor llamado prometheus de forma controlada. Después de unos segundos, Prometheus estará ejecutándose con la nueva configuración.

Ahora, verifiquemos el cambio en la interfaz de usuario de Prometheus.

  1. En la interfaz de LabEx, haz clic en el botón + (Nueva Pestaña), elige Web Service e introduce 9090 para el puerto.
  2. Cuando se abra la nueva pestaña, deberías ver la página de inicio del Navegador de Expresiones de Prometheus.
  3. Haz clic en el menú "Status" (Estado) en la barra de navegación superior y luego selecciona "Targets" (Objetivos).
Página de objetivos de Prometheus mostrando el estado UP

Ahora deberías ver dos objetivos listados: prometheus y node_exporter. Ambos deberían tener un estado "UP", lo que indica que Prometheus está obteniendo métricas exitosamente tanto de sí mismo como de Node Exporter.

Consultar la Métrica node_cpu_seconds_total en la Interfaz de Usuario (UI)

El último paso es confirmar que Prometheus está ingiriendo métricas correctamente desde Node Exporter ejecutando una consulta.

Navega de vuelta a la página principal "Graph" (Gráfico) en la interfaz de usuario de Prometheus haciendo clic en el enlace "Graph" en la barra de navegación. En el campo de entrada "Expression" (Expresión), escribe el siguiente nombre de métrica:

node_cpu_seconds_total

Esta métrica representa el tiempo total en segundos que la CPU ha pasado en varios modos (por ejemplo, inactivo, usuario, sistema).

Interfaz de usuario de Prometheus mostrando los resultados de la consulta node_cpu_seconds_total

Haz clic en el botón "Execute" (Ejecutar). Si la conexión es exitosa, verás una tabla de resultados debajo del gráfico. Cada resultado corresponde a un núcleo de CPU y modo diferente. Ver estos resultados confirma que todo tu pipeline de monitorización está funcionando correctamente, desde la recopilación de datos por Node Exporter hasta la ingesta y almacenamiento por Prometheus.

Puedes cambiar entre las vistas "Table" (Tabla) y "Graph" (Gráfico) para visualizar los datos.

Resumen

¡Felicitaciones! Has expandido exitosamente tu configuración de monitorización añadiendo un servicio externo. En este laboratorio, aprendiste a ejecutar el Node Exporter oficial de Prometheus en un contenedor Docker, a configurar una instancia de Prometheus para obtener métricas de este nuevo objetivo, y a verificar la recopilación de datos consultando métricas a nivel de host. Esta es una habilidad fundamental para construir una pila de observabilidad completa, permitiéndote obtener información detallada sobre el rendimiento y la salud de tus sistemas.