Prometheus+Grafana+cAdvisor
- Container 들을 Monitoring 하기 위해 각 인스턴스에 cAdvisor 를 추가 설치하여 Prometheus에서 Metric을 수집할 수 있도록 한다.
- node_exporter의 metric 수집용 prometheus와 cAdvisor의 metric 수집용 prometheus 두 개를 띄운다.
먼저 Grafana+Prometheus server에 디렉토리 생성 후, prometheus 설정 파일 2개를 만든다. 만든 설정 파일을 바탕으로 node_exporter와 cAdvisor 용으로 prometheus 컨테이너 2개를 각각 띄우고 Grafana를 올린다.
/Prometheus/prometheus.yml
mkdir /Prometheus
cd /Prometheus
cat > prometheus.yml
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
# 'scrpae_timeout'
# Alertmanager
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs:
- job_name: 'prometheus'
# 'metrics_path'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
# 'metrics_path'
scrape_interval: 5s
static_configs:
- targets: ['node_exporter:9100']
- 예시에서는 하나의 node에 대해서만 수집하지만 여러 node에서 받아오려면 - targets: 에 추가해주면 된다.
- targets : ['192.168.100.101:9100', '192.168.100.102:9100']
/Prometheus/prometheus_cadvisor.yml
cd /Prometheus
cat > prom_cadvisor.yml
# prom_cadvisor.yml
global:
scrape_interval: 5s
external_labels:
scrape_configs:
- job_name: 'cAdvisor'
static_configs:
- targets: ['cAdvisor:8080'] # cAdvisor 설치된 대상의 IP
- 예시에서는 하나의 node에 대해서만 수집하지만 여러 node에서 받아오려면 - targets: 에 추가해주면 된다.
- targets : ['192.168.100.101:8080', '192.168.100.102:8080']
[사전 작업]
1. 마운트 할 볼륨에 대한 디렉토리 생성
- $ sudo mkdir /Prometheus/etc
- $ sudo mkdir /Prometheus/data
- $ sudo chmod 777 -R /Prometheus
- docker에서 해당 디렉토리를 수정할 수 있도록 권한 변경
- 위의 디렉토리 권한을 수정하지 않으면 docker-compose 실행은 되나 컨테이너 계속 죽음.
Grafana+Prometheus Server의 docker-compose.yml
version: '3.7'
services:
grafana:
image: grafana/grafana:latest
ports:
- '3000:3000'
environment:
- TZ=Asia/Seoul
prometheus:
image: prom/prometheus
ports:
- '9090:9090'
volumes:
- /Prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- /Pprometheus/data:/prometheus
- /Prometheus/etc:/etc/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
prometheus-cadvisor:
image: prom/prometheus
ports:
- '9091:9090'
volumes:
- /Prometheus/prom_cadvisor.yml:/etc/prometheus/prometheus.yml:ro
command:
- --config.file=/etc/prometheus/prometheus.yml
Exporter의 docker-compose.yml
version: '3.7'
services:
node_exporter:
image: prom/node-exporter
restart: always
ports:
- '9100:9100'
cadvisor:
image: gcr.io/google-containers/cadvisor:v0.33.0
privileged: true
ports:
- '8080:8080'
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- /dev/disk:/dev/disk:ro
Grafana에 접속 후, node_exporter와 cAdvisor에 대한 prometheus 2개를 data source로 추가한다.
※ (주의) Grafana가 node_exporter와 cAdvisor에서 데이터를 긁어오는 것이 아니라 prometheus에서 긁어오는 것이다.
- Save&Test를 진행 시 정상적으로 받아오는 것을 확인한다.
Dashboard
대시보드를 직접 생성하거나, Grafana Lab에서 가져와서 Import 한다.
(1) Docker Host에 대한 Dashboard
- import : 11074
- data sources : node_exporter
(2) Container를 모니터링하기 위한 Dashboard
- import : 13946
- data sources: cAdvisor
'AWS(Amazon Web Service) > Prom+Grafana+cAdvisor' 카테고리의 다른 글
Prometheus Architecture (0) | 2022.10.30 |
---|---|
[Prometheus/Shell script] node exporter 와 mysqld exporter 설치 (0) | 2022.06.23 |
[AWS] Prometheus+Grafana 설치 (2) (0) | 2021.11.17 |
[AWS] Prometheus+Grafana 설치 (1) (0) | 2021.11.16 |