D9.2 Node Exporter & cAdvisor 📡
Node Exporter — Host metrics
Ο node_exporter συλλέγει host-level metrics (CPU, RAM, disk, network):
tasks:
- name: "📡 Node Exporter container"
community.docker.docker_container:
name: node_exporter
image: "prom/node-exporter:v1.7.0"
state: started
restart_policy: unless-stopped
network_mode: host # ← host network για network metrics
pid_mode: host # ← host PID για process metrics
user: "65534:65534" # ← nobody (non-root)
read_only: true
security_opts: ["no-new-privileges:true"]
cap_drop: [ALL]
volumes:
- "/:/host:ro,rslave" # ← read-only host filesystem
- "/sys:/host/sys:ro,rslave"
- "/proc:/host/proc:ro,rslave"
command:
- "--path.rootfs=/host"
- "--path.procfs=/host/proc"
- "--path.sysfs=/host/sys"
- "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)"
- "--web.listen-address=:9100"
labels:
monitoring: prometheus
managed-by: ansible
cAdvisor — Container metrics
Το cAdvisor συλλέγει container-level metrics (CPU, RAM, network ανά container):
tasks:
- name: "📊 cAdvisor container"
community.docker.docker_container:
name: cadvisor
image: "gcr.io/cadvisor/cadvisor:v0.49.0"
state: started
restart_policy: unless-stopped
privileged: true # ← χρειάζεται για container metrics
volumes:
- "/:/rootfs:ro"
- "/var/run:/var/run:ro"
- "/sys:/sys:ro"
- "/var/lib/docker/:/var/lib/docker:ro"
- "/dev/disk/:/dev/disk:ro"
ports:
- "127.0.0.1:8080:8080" # ← localhost only!
command:
- "--housekeeping_interval=10s"
- "--max_housekeeping_interval=15s"
- "--store_container_labels=false"
- "--disable_metrics=accelerator,cpu_topology,disk,memory_numa,tcp,udp,percpu,sched,process,hugetlb,referenced_memory,resctrl,cpuset,advtcp,memory_numa"
labels:
monitoring: prometheus
managed-by: ansible
💡 Χρήσιμες metrics από cAdvisor:
container_cpu_usage_seconds_total → CPU χρήση container_memory_usage_bytes → RAM χρήση container_network_receive_bytes_total → Network in container_network_transmit_bytes_total → Network out container_fs_usage_bytes → Disk χρήση
Deploy σε όλους τους managed hosts
---
# deploy-exporters.yml
- name: Deploy Monitoring Exporters
hosts: all_managed # ← ΟΛΑ τα managed hosts
become: true
gather_facts: false
vars:
node_exporter_version: "v1.7.0"
cadvisor_version: "v0.49.0"
tasks:
- name: "📡 Node Exporter"
community.docker.docker_container:
name: node_exporter
image: "prom/node-exporter:{{ node_exporter_version }}"
state: started
restart_policy: unless-stopped
network_mode: host
pid_mode: host
user: "65534:65534"
read_only: true
security_opts: ["no-new-privileges:true"]
cap_drop: [ALL]
volumes:
- "/:/host:ro,rslave"
command:
- "--path.rootfs=/host"
- "--web.listen-address=:9100"
labels:
monitoring: prometheus
- name: "📊 cAdvisor"
community.docker.docker_container:
name: cadvisor
image: "gcr.io/cadvisor/cadvisor:{{ cadvisor_version }}"
state: started
restart_policy: unless-stopped
privileged: true
ports:
- "127.0.0.1:8080:8080"
volumes:
- "/:/rootfs:ro"
- "/var/run:/var/run:ro"
- "/sys:/sys:ro"
- "/var/lib/docker/:/var/lib/docker:ro"
labels:
monitoring: prometheus
Σύνοψη D9.2
Exporters
│
├── node_exporter (:9100):
│ ├── Host metrics (CPU, RAM, disk, network)
│ ├── network_mode: host (για net metrics)
│ ├── pid_mode: host (για process metrics)
│ └── volumes: /:/host:ro (read-only)
│
└── cAdvisor (:8080):
├── Container metrics (per-container)
├── privileged: true (απαιτείται)
└── Εγκαθίσταται σε ΟΛΟΥΣ τους hosts