Cadvisor는 (Container Advisor)로 컨테이너에서 실행되는 애플리케이션의 매트릭을 수집, 처리 및 시각화 하는데 사용이된다. Cadvisor는 CPU, 메모리, 네트워크 I/O, 디스크 I/O 등의 성능 지표를 실시간으로 모니터링하고 시각화 할 수 있는 UI를 제공한다.
주요기능
1-1) 실시간 성능 모니터링
1-2) 다양한 데이터 저장소 연동
Prometheus는 오픈소스 시스템 모니터링 및 경고 툴 킷 이다. 다양한 시스템과 서비스의 매트릭을 모니터링 하는데 매우 효과적이다. prometheus UI에서 수집된 메트릭 확인을 http://localhost:9090/ 여기서 확인 가능 하다.
주요기능
2-1) 다양한 매트릭 수집
2-2) PromQL
2-3) 경고 알림
Grafana는 오픈 소스 시각화 모니터링 툴로 다양한 데이터 소스로 부터 데이터를 수집하고 대시보드 형태로 보여줄 수 있다. 특히 시계혈 데이터(ex)Prometheus..)에 특화되어있다. 다양한 데이터 소스랑 연결 가능하다. http://localhost:3000/ 여기서 확인 가능 하다.
주요기능
3-1) 대시보드
3-2) 데이터 소스 통합
3-3) 경고

cadvisor: //서비스 이름
image: gcr.io/cadvisor/cadvisor:latest //아미지 이름
ports:
- "8080:8080" //포트 8080매핑
volumes:
- /:/rootfs:ro //읽기 전용,루트파일 시스템
- /var/run:/var/run:ro //읽기쓰기, 런타임데이터
- /sys:/sys:ro //읽기 전용 데이터
- /var/lib/docker/:/var/lib/docker:ro //읽기정보 데이터, 도커 데이터
prometheus: //서비스이름
image: prom/prometheus:latest //이미지 이름
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml //로컬에 존재하는 prometheus.yml을 컨테이너에 추가를 위한것
command:
- '--config.file=/etc/prometheus/prometheus.yml' //프로메테우스를 실행할떄 prometheus.yml에 있는데로 실행해 달라는것
ports:
- "9090:9090" //포트 9090매핑
grafana: //서비스 이름
image: grafana/grafana:latest //이미지 이름
volumes:
volumes:
//이제 데이터를 저장을 해 주어야 하는데
- ./grafana/datasources:/etc/grafana/provisioning/datasources/ // grafana를 하면 datasource 대이터 소스들을 저장하고 도커랑 공유한다는것이다.
- ./grafana/dashboards:/etc/grafana/provisioning/dashboards/ //이것도 대시보드를 도커랑 공유한다는것이다.
ports:
- "3000:3000" //포트 3000매핑
global:
scrape_interval: 15s //prometheus가 각 타겟의 매트릭을 15초마다 가져오도록 함.
scrape_configs: //수집할 다양한 목록
- job_name: 'fastapi' //이작업의 이름은 fastapi임
metrics_path: /metrics //매트릭이 제공되는 경로고 기본값은 매트릭스로 설정
static_configs: //정적타겟
- targets: ['fastapi:8000'] //fastapi 8000 포트에서 매트릭 수집하도록 정함
- job_name: 'cadvisor' //이작업의 이름은 cadvisor임
static_configs: //정적타겟
- targets: ['cadvisor:8080'] //cadvisor 8080포트에서 매트릭 수집하도록 설정
아이디:admin 비밀번호:admin
3-1) data source 추가
왼쪽에 Data sources→+ Add new data source → name: 원하는것 → connection: http://host.docker.internal:9090 → save&test
3-2) 대시보드 꾸미기
dashboards → new → 하면 new dashboard(처음부터 자기가 하나하나 커스텀 해서 만드는 것) , import (이미 만들어진 대시보드 양식 가져오는것) → 이러고 이제 대시보드를 취향것 꾸미면 된다.
그리고 쿼리 할때 https://promlabs.com/promql-cheat-sheet/ 여기 사이트 들어가면 많이 있어서 골라쓰면 된다.
slack 방 설정
일단 slack에 먼저 토큰을 받기위해 먼저 slack api 사이트를 접속하고 Create new app을 선택을 한다 from scratch를 누르고 app name 을 적고 어디 워크페이스에 연동할지 선택한다. Incoming web hooks에서 on으로 바꿔주고 add new web hooks to Workspace를 입력한다. 이러면 토큰이 나오게 되고 그걸 복사를 한다. 그리고 Basic information에서 Display Information에서 프로필 색깔을 바꿔줄 수 있다.
그라파나 연동 하는법
그라파나를 키고 Home → Alerting → Contact Points 여기로 들어가서 add contact point 에서 name을 적고 web hooks에 아까 슬랙에서 복사란 토큰을 집어 넣는다. 그러면 정상적으로 생기게 될 것이다.
이제 연동은 다했고 어떤 상태가 되면 연락이 갈지를 선택을 해야한다.
그라파나에서 Alreting 에 Alreting rules에 new alert rule를 들어가고 rule name을 적고 그러면 A ,B ,C 가 보이게 될것이다. A에서는 어떠한 값을 기준으로 Alert를 발생시킬지 값을 추출하는 쿼리문을 작성하고, B는 A의 값을 어떠한 기준으로 Alert를 발생시킬지 Alert의 기준을 설정한다.
cAdvisor가 각 컨테이너에서 cpu사용량이나, 디스크등의 매트릭을 실시간으로 수집하고 수집한 데이터를 Prometheus가 접근할 수 있게 합니다.


Prometheus는 주기적으로 Scraping을 통해 매트릭을 수집하고 시계형 데이터 베이스에 저장합니다.

Grafana는 Promethus 데이터 소스로 PromQL을 사용해 데이터를 쿼리하여 그래프, 차트 등으로 시각화 합니다.

마지막으로 Grafana에 알람을 설정해 지정한 범위를 벗어나면 Slack에 연락이 가도록 하였습니다.

비밀댓글 입니다.