IMG-LOGO
공지사항 :

cAdvisor

lmkfox - 2025-03-12 07:03:26 58 Views 0 Comment

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 등과 연동하면 장기적인 모니터링 및 분석도 가능

• 컨테이너 기반의 애플리케이션을 운영하는 환경에서 빠르고 가볍게 리소스 모니터링을 수행할 수 있는 필수 도구 중 하나다.


댓글