# Tutorial 9: Monitorizar tu homelab con Grafana, Prometheus, cAdvisor y Node Exporter

- Link: https://www.clhome.net/monitorizar-homelab-grafana-prometheus-docker/
- Published: 2026-10-06T10:28:17+02:00
- Author: gerard

Ruta de aprendizaje
Tutorial 9 de 14

[1](https://www.clhome.net/preparar-raspberry-pi-docker-compose/)[2](https://www.clhome.net/tutorial-2-docker-desde-cero-imagenes-contenedores-volumenes-redes/)
[3](https://www.clhome.net/tutorial-3-primer-servicio-docker-compose/)[4](https://www.clhome.net/tutorial-4-administrar-docker-portainer/)
[5](https://www.clhome.net/red-docker-macvlan-portainer/)[6](https://www.clhome.net/servicios-homelab-docker-compose-dozzle-home-assistant/)
[7](https://www.clhome.net/instalar-home-assistant-y-node-red-con-docker/)[8](https://www.clhome.net/instalar-unifi-network-application-docker-compose/)
[9](https://www.clhome.net/monitorizar-homelab-grafana-prometheus-docker/)[10](https://www.clhome.net/gestionar-actualizaciones-y-copias-de-seguridad-de-contenedores/)
[11](https://www.clhome.net/crear-un-sistema-de-comprobacion-de-salud-y-alertas-para-docker/)
[12](https://www.clhome.net/tutorial-12-proteger-docker-permisos-secretos-puertos-aislamiento/)
[13](https://www.clhome.net/tutorial-13-acceso-remoto-seguro-servicios-docker/)[14](https://www.clhome.net/tutorial-14-diagnosticar-errores-docker/)

[← Anterior](https://www.clhome.net/instalar-unifi-network-application-docker-compose/)
[Índice de guías](https://www.clhome.net/guias/)[Siguiente →](https://www.clhome.net/gestionar-actualizaciones-y-copias-de-seguridad-de-contenedores/)

En este stack cuatro servicios trabajan juntos: **Grafana** es la interfaz principal,**
Prometheus** almacena y consulta las métricas, **Node Exporter** expone el estado
de la Raspberry Pi o del host y **cAdvisor** expone las métricas de los contenedores.
El flujo es: Node Exporter y cAdvisor → Prometheus → Grafana.

## Direcciones de ejemplo

    ```wp-block-code
    Grafana:       192.168.20.50
    Prometheus:    192.168.20.51
    Node Exporter: 192.168.20.52
    cAdvisor:      192.168.20.53
    ```

Son IPs ficticias dentro de la [red macvlan](https://www.clhome.net/red-docker-macvlan-portainer/)
de la guía anterior. Reserva estas direcciones fuera del DHCP y cámbialas si tu 
red usa otro rango.

## Orden recomendado de despliegue

Despliega primero Node Exporter y cAdvisor, después Prometheus y por último Grafana.
Así, cuando abras Grafana, Prometheus ya tendrá objetivos configurados y podrá mostrar
las métricas del host y de los contenedores.

## 1. Node Exporter (192.168.20.52)

Node Exporter recoge métricas del sistema operativo y del hardware: CPU, memoria,
discos, red y carga. No gestiona contenedores; esa función corresponde a cAdvisor.
Guarda este Compose en `/docker/node-exporter/compose.yaml`:

    ```wp-block-code
    services:
      node-exporter:
        image: prom/node-exporter:latest
        container_name: node-exporter
        restart: unless-stopped
        command:
          - --path.rootfs=/host
        volumes:
          - /:/host:ro,rslave
        ports:
          - "9100:9100"
        networks:
          docker_macvlan:
            ipv4_address: 192.168.20.52

    networks:
      docker_macvlan:
        external: true
    ```

Arranca con `docker compose up -d` y comprueba `http://192.168.20.52:9100/metrics`.

## 2. cAdvisor (192.168.20.53)

cAdvisor observa el consumo de CPU, memoria, red y disco de los contenedores. Necesita
acceso de solo lectura a varias rutas del host. Guarda este Compose en `/docker/
cadvisor/compose.yaml`:

    ```wp-block-code
    services:
      cadvisor:
        image: gcr.io/cadvisor/cadvisor:latest
        container_name: cadvisor
        restart: unless-stopped
        privileged: true
        volumes:
          - /:/rootfs:ro
          - /var/run:/var/run:ro
          - /sys:/sys:ro
          - /var/lib/docker:/var/lib/docker:ro
        ports:
          - "8080:8080"
        networks:
          docker_macvlan:
            ipv4_address: 192.168.20.53

    networks:
      docker_macvlan:
        external: true
    ```

Arranca con `docker compose up -d` y revisa `http://192.168.20.53:8080`. Comprueba
la compatibilidad de la imagen con la arquitectura ARM de tu Raspberry Pi y limita
la exposición de estos puertos a la VLAN Docker.

## 3. Prometheus (192.168.20.51)

Prometheus visita periódicamente los endpoints de Node Exporter y cAdvisor, guarda
las series temporales y permite consultarlas desde Grafana. Guarda este Compose 
en `/docker/prometheus/compose.yaml`:

    ```wp-block-code
    services:
      prometheus:
        image: prom/prometheus:latest
        container_name: prometheus
        restart: unless-stopped
        command:
          - --config.file=/etc/prometheus/prometheus.yml
          - --storage.tsdb.path=/prometheus
        ports:
          - "9090:9090"
        volumes:
          - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
          - ./prometheus:/prometheus
        networks:
          docker_macvlan:
            ipv4_address: 192.168.20.51

    networks:
      docker_macvlan:
        external: true
    ```

En la misma carpeta crea el archivo `prometheus.yml` con los objetivos de scraping:

    ```wp-block-code
    global:
      scrape_interval: 15s

    scrape_configs:
      - job_name: node
        static_configs:
          - targets: ['192.168.20.52:9100']
      - job_name: cadvisor
        static_configs:
          - targets: ['192.168.20.53:8080']
    ```

Comprueba el estado en `http://192.168.20.51:9090/targets`: los objetivos deben 
aparecer como **UP**.

## 4. Grafana (192.168.20.50)

Grafana presenta paneles, gráficas y alertas. Guarda este Compose en `/docker/grafana/
compose.yaml`:

    ```wp-block-code
    services:
      grafana:
        image: grafana/grafana:latest
        container_name: grafana
        restart: unless-stopped
        user: "472"
        ports:
          - "3000:3000"
        volumes:
          - ./grafana:/var/lib/grafana
        networks:
          docker_macvlan:
            ipv4_address: 192.168.20.50

    networks:
      docker_macvlan:
        external: true
    ```

Arranca el servicio con `docker compose up -d` y entra en `http://192.168.20.50:
3000`. Cambia la contraseña inicial y añade Prometheus como fuente de datos con 
la URL `http://192.168.20.51:9090`.

**Nota:** como el usuario `472` necesita escribir en `./grafana`, crea el directorio
antes de arrancar y ajusta sus permisos con `sudo chown -R 472:472 grafana`.

## Siguiente tutorial: Gestionar actualizaciones y copias de seguridad de contenedores

En el tutorial 10 continuaremos la ruta de Docker y servicios paso a paso.

[Pasa al siguiente tutorial →](https://www.clhome.net/gestionar-actualizaciones-y-copias-de-seguridad-de-contenedores/)
