services:
prometheus:
image: prom/prometheus:v2.18.1
container_name: do-prometheus
network_mode: host
restart: unless-stopped
volumes:
- ./conf/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- './data/prometheus:/data/prometheus'
user: root
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/data/prometheus'
depends_on:
- cadvisor
global:
scrape_interval: 15s
evaluation_interval: 10s
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
- job_name: 'cadvisor'
static_configs:
- targets: ['localhost:9200']
docker-compose up -d prometheus
Prometheus는 다양한 메트릭 지표를 수집할 수 있다.
예시 query:
Host CPU (%)
100 * (1 - avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])))
Host Memory (%)
100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))
Host Storage (%)
100 * (1 - (node_filesystem_free_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}))
CPU 사용량 query 조회 결과
Node Exporter는 Prometheus의 exporter로, 서버의 하드웨어 및 OS 메트릭을 수집한다.
services:
node-exporter:
image: prom/node-exporter:v1.8.1
container_name: do-node-exporter
command:
- '--path.rootfs=/host'
network_mode: host
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
docker-compose up -d node-exporter
cAdvisor는 컨테이너 메트릭을 수집하는 도구
1. Docker Compose 파일 설정
services:
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.49.1
container_name: do-cadvisor
restart: unless-stopped
ports:
- 9200:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
docker-compose up -d cadvisor
위와 같이 수집한 서버의 metric정보, Docker container의 metric정보를 활용하여 서버 및 컨테이너의 리소스 사용량을 모니터링하고, 필요한 경우 알림을 설정할 수 있다.
다음 편에 이어서 이렇게 수집한 데이터를 Grafana 대시보드를 통해 UI로 모니터링 할 수 있도록 한다.