Node-Exporter
하드웨어의 상태와 커널 관련 메트릭을 수집하는 메트릭 수집기
Prometheus
오픈소스 시스템 모니터링 및 경고 툴킷
Grafana
오픈소스 인터랙티브 데이터 시각화 플랫폼
모니터링 할 메트릭 수집 과정
- node exporter가 Ubuntu(EC2)의 상태와 커널 관련 메트릭을 수집하고 HTTP 통신을 통해 매트릭 데이터를 가져갈 수 있게 /metrics 라는 HTTP 엔드포인트를 제공
- Prometheus가 node exporter의 엔드포인트로 HTTP GET 요청을 날려 매트릭 정보를 수집
- Grafana를 이용해 Prometheus가 수집한 정보를 시각화하여 표시
docker-compose를 이용해 설치
- EC2 내부에 docker 관련 파일들을 작성하기 위한 디렉토리 생성 (`mkdir monitoring`)
- prometheus 설정을 위한 `prometheus.yml` 작성
- `global.scrape_interval` : 전역적으로 1분마다 매트릭을 수집
- `scrape_configs.job_name` : 수집한 시리즈에 대해 job의 이름을 node로 설정
- `scrape_configs.metrics_path` : default값은 `/metrics`
- `scrape_configs.static_configs.target` : node-exporter 컨테이너의 9100에서 데이터를 수집
global:
scrape_interval: 1m
scrape_configs:
- job_name: "node"
static_configs:
- targets: ["node-exporter:9100"]
- `docker-compose.yml` 파일 작성
- node exporter, prometheus, grafana를 docker를 이용해 띄우기
version: '3.5'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}
grafana_data: {}
services:
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
expose:
- 9100
networks:
- monitoring
ports:
- 9100:9100
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/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'
- '--web.enable-lifecycle'
expose:
- 9090
ports:
- 9090:9090
networks:
- monitoring
grafana:
container_name: grafana
image: grafana/grafana-oss
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana_data:/var/lib/grafana
ports:
- 3000:3000
depends_on:
- prometheus
networks:
- monitoring
restart: always
- `docker-compose up -d` 명령어를 이용해 컨테이너를 띄우기
- `{서버 IP}:9090`으로 접속했을 때 prometheus가 node의 데이터를 잘 수집해 오고 있는 것을 확인할 수 있음
- `{서버 IP}:3000' 으로 접속했을 때 grafana도 잘 올라간 것을 확인할 수 있음
'정리 > Infra' 카테고리의 다른 글
[Prometheus+Grafana] Spring Boot 서버 모니터링 (0) | 2023.10.05 |
---|---|
[Grafana+Prometheus+Docker] Ubuntu(EC2) 서버 모니터링 (2) (1) | 2023.10.04 |