cAdvisor(Container Advisor)란?
cAdvisor(Container Advisor)는 Google에서 개발한 오픈 소스 컨테이너 모니터링 도구로, Docker 컨테이너 및 Linux 컨테이너의 리소스 사용량을 실시간으로 수집하고 분석하는 역할을 한다.
컨테이너의 CPU, 메모리, 디스크 I/O, 네트워크 사용량 등의 정보를 제공하며, Prometheus, InfluxDB, Grafana 등 다양한 모니터링 도구와 연동할 수 있다.
1. cAdvisor의 주요 특징
1.1 실시간 컨테이너 모니터링
• 실행 중인 모든 컨테이너의 리소스 사용량을 자동으로 감지하고 모니터링
• 컨테이너별 CPU, 메모리, 네트워크, 디스크 I/O 등의 성능 지표를 실시간으로 수집
1.2 웹 UI 제공
• 기본적으로 웹 UI(localhost:8080)를 통해 컨테이너의 리소스 사용량을 시각적으로 확인 가능
1.3 메트릭 데이터 저장 및 연동
• Prometheus, InfluxDB, Elasticsearch 등과 연동하여 장기적인 데이터 저장 및 분석 가능
• Grafana와 조합하여 강력한 시각화 대시보드 구축 가능
1.4 컨테이너 자동 감지 및 지원
• 실행 중인 Docker 컨테이너를 자동으로 감지하여 모니터링
• Kubernetes 및 기타 Linux 컨테이너 런타임(LXC 등)과도 연동 가능
1.5 경량화된 성능 모니터링
• 가볍고 빠르며, 시스템에 큰 부하를 주지 않음
• 개별 컨테이너뿐만 아니라 호스트 시스템 전체의 리소스 사용량도 모니터링 가능
2. cAdvisor 아키텍처
cAdvisor는 크게 3가지 주요 구성 요소로 이루어진다.
1. Container Discovery (컨테이너 자동 탐색)
• 실행 중인 컨테이너를 자동으로 감지하여 모니터링을 시작
2. Resource Collection (리소스 수집)
• CPU, 메모리, 디스크, 네트워크 등의 사용량을 지속적으로 수집
• /sys/fs/cgroup 및 /proc 파일 시스템을 사용하여 컨테이너별 메트릭을 계산
3. Storage & Export (데이터 저장 및 출력)
• 기본적으로 cAdvisor의 웹 UI를 통해 실시간 모니터링 가능
• Prometheus, InfluxDB, Elasticsearch 등의 데이터 저장소와 연동 가능
3. cAdvisor 설치 및 실행 방법
3.1 Docker 컨테이너로 실행
가장 일반적인 방법은 Docker 컨테이너로 cAdvisor를 실행하는 것이다.
docker run -d --name=cadvisor \
-p 8080:8080 \
--privileged \
--volume=/var/run/docker.sock:/var/run/docker.sock:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
gcr.io/cadvisor/cadvisor:latest
• -p 8080:8080 : 웹 UI를 localhost:8080에서 확인할 수 있도록 설정
• /var/run/docker.sock : 컨테이너 정보를 읽기 위해 Docker 소켓을 마운트
• /sys, /var/lib/docker/ : 컨테이너의 메트릭을 수집하기 위해 필요한 디렉토리 마운트
3.2 Kubernetes 환경에서 실행
Kubernetes 환경에서는 DaemonSet으로 cAdvisor를 실행할 수 있다.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: cadvisor
namespace: monitoring
spec:
selector:
matchLabels:
name: cadvisor
template:
metadata:
labels:
name: cadvisor
spec:
containers:
- name: cadvisor
image: gcr.io/cadvisor/cadvisor:latest
ports:
- containerPort: 8080
volumeMounts:
- name: rootfs
mountPath: /rootfs
readOnly: true
- name: var-run
mountPath: /var/run
readOnly: false
volumes:
- name: rootfs
hostPath:
path: /
- name: var-run
hostPath:
path: /var/run
• 위 설정을 통해 Kubernetes 클러스터의 모든 노드에서 cAdvisor가 실행되도록 구성할 수 있다.
4. cAdvisor 주요 기능 및 활용 사례
4.1 컨테이너 성능 모니터링
• 실행 중인 모든 컨테이너의 CPU, 메모리, 디스크, 네트워크 사용량을 실시간 모니터링
• 특정 컨테이너가 과도한 리소스를 소비하는지 감지 가능
4.2 Kubernetes 클러스터 모니터링
• Kubernetes 클러스터의 개별 노드와 컨테이너 리소스 사용량 분석
• Prometheus 및 Grafana와 연동하여 장기적인 성능 분석 가능
4.3 로그 및 메트릭 수집
• InfluxDB, Prometheus와 연동하여 컨테이너 리소스 데이터 저장
• Grafana 대시보드를 통해 장기적인 데이터 분석 및 시각화 가능
5. cAdvisor vs 다른 컨테이너 모니터링 도구 비교
기능 |
cAdvisor |
Prometheus + Node Exporter |
Netdata |
Zabbix |
---|---|---|---|---|
컨테이너 자동 감지 |
✅ |
❌ (수동 설정 필요) |
✅ |
❌ |
실시간 모니터링 |
✅ |
✅ |
✅ |
❌ |
데이터 저장 |
❌ (기본 저장 없음) |
✅ |
✅ |
✅ |
경고 시스템 |
❌ |
✅ (Alertmanager 필요) |
✅ |
✅ |
대시보드 제공 |
✅ (기본 웹 UI) |
✅ (Grafana 필요) |
✅ |
❌ |
6. cAdvisor를 Prometheus 및 Grafana와 함께 사용하기
6.1 Prometheus에 cAdvisor 메트릭 저장
cAdvisor는 Prometheus가 데이터를 스크랩할 수 있도록 메트릭을 /metrics 엔드포인트에서 제공한다.
Prometheus 설정 파일(prometheus.yml)에 아래 내용을 추가한다.
scrape_configs:
- job_name: 'cadvisor'
static_configs:
- targets: ['localhost:8080']
• Prometheus가 http://localhost:8080/metrics에서 데이터를 수집하도록 설정
6.2 Grafana에서 대시보드 구성
1. Grafana에 접속 후 Data Sources → Prometheus 추가
2. Grafana에서 cAdvisor용 공식 대시보드 (ID: 893) 가져오기
3. 컨테이너별 CPU, 메모리, 네트워크, 디스크 사용량을 실시간 모니터링 가능
7. 결론
cAdvisor는 가벼우면서도 강력한 컨테이너 모니터링 도구로, Docker 및 Kubernetes 환경에서 실시간 리소스 모니터링을 수행하는 데 유용하다.
• 기본적으로 웹 UI를 통해 컨테이너별 리소스 사용량을 시각적으로 확인 가능
• Prometheus, InfluxDB, Grafana 등과 연동하면 장기적인 모니터링 및 분석도 가능
• 컨테이너 기반의 애플리케이션을 운영하는 환경에서 빠르고 가볍게 리소스 모니터링을 수행할 수 있는 필수 도구 중 하나다.