ทำไมต้อง Monitor Docker?
การติดตาม Container Health, CPU, Memory และ Network ช่วยให้รู้ปัญหาก่อนที่ User จะได้รับผลกระทบ Prometheus เป็นเครื่องเก็บ Metrics และ Grafana เป็นเครื่องแสดง Dashboard
สถาปัตยกรรม Monitoring Stack
Prometheus ← scrape metrics ← cAdvisor (Docker Container metrics)
↓
Grafana Dashboard
↓
Alertmanager (Alert)
docker-compose.yml
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.retention.time=15d'
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
environment:
GF_SECURITY_ADMIN_PASSWORD: admin123
GF_USERS_ALLOW_SIGN_UP: "false"
volumes:
- grafana_data:/var/lib/grafana
depends_on:
- prometheus
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
privileged: true
node-exporter:
image: prom/node-exporter:latest
container_name: node_exporter
restart: unless-stopped
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
volumes:
prometheus_data:
grafana_data:
prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
ตั้งค่า Grafana Dashboard
- เข้า Grafana ที่
http://server:3000(admin/admin123) - Configuration → Data Sources → Add Prometheus (
http://prometheus:9090) - Import Dashboard ID 193 (Docker cAdvisor) หรือ 1860 (Node Exporter Full)
Metrics ที่น่าติดตาม
| Metric | ความหมาย |
|---|---|
| container_cpu_usage_seconds_total | CPU ใช้สะสม |
| container_memory_usage_bytes | Memory ที่ใช้อยู่ |
| container_network_receive_bytes_total | Network รับเข้า |
| container_fs_usage_bytes | Disk usage |
ตั้ง Alert ด้วย Alertmanager
version: '3.8'
services:
alertmanager:
image: prom/alertmanager:latest
container_name: alertmanager
restart: unless-stopped
ports:
- "9093:9093"
volumes:
- ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
สรุป
Prometheus + Grafana + cAdvisor เป็น Monitoring Stack ที่นิยมที่สุดสำหรับ Docker ติดตั้งได้ง่ายด้วย Docker Compose อย่างเดียว

