Grafana/Prometheus Architecture

- 아래 그림에서 Exporters 에 해당하는 부분에 해당함
- cAdvisor는 컨테이너의 리소스 사용량, 네트워크 I/O, 디스크 I/O, 메모리 사용량 등의 정보를 수집하고 시각화하여 사용자가 쉽게 모니터링할 수 있도록 한다. Google에서 개발되었으며, 현재는 Cloud Native Computing Foundation (CNCF)의 산하 프로젝트로 유지보수되고 있다.

테스트 수행한 환경

- 인터넷가능한 환경, Rocky Linux 8.6, Docker가 구성된 환경

1. cAdvisor docker-compose 구동을 위한 스크립트 준비

전체파일 구성

tree
├── create.sh
├── delete.sh
├── docker-compose.yml
├── log.sh
├── start.sh
└── stop.sh

1) docker-compose.yml 샘플

주요설정 설명
- privileged: true 해당 설정을 해야 정상적으로 구동된다.

vi  docker-compose.yml

version: '3.7'

# monitor-net이름으로 이미 구성한 경우에는 networks부분은 주석처리
networks:
  monitor-net:
    driver: bridge

services:

  cadvisor:
    #image: gcr.io/google-containers/cadvisor:v0.34.0
    image: google/cadvisor:latest   
    container_name: cadvisor
    privileged: true
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
      - /dev/disk/:/dev/disk:ro
#    restart: unless-stopped
    ports:
      - 8080:8080 
    networks:
      - monitor-net

2) docker 컨테이너 생성,삭제,구동,중지,로그조회 등 스크립트 작성

cat > create.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml up -d
docker-compose -f docker-compose.yml logs -f
EOF

cat > delete.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml down -v
EOF

cat > start.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml start
EOF

cat > stop.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml stop
EOF

cat > log.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml logs -f
EOF

chmod +x *.sh

2. cAdvisor 정상구동여부 확인, 대시보드 확인

### 구동하기
./create.sh 

### 도커컨테이너 정상구동여부 확인
docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                    NAMES
156c926b2f2f        google/cadvisor:latest      "/usr/bin/cadvisor..."   56 minutes ago      Up 56 minutes       0.0.0.0:8080->8080/tcp   cadvisor

3. cAdvisor 메트릭 데이터 조회

curl http://아이피:8080/metrics
# HELP cadvisor_version_info A metric with a constant '1' value labeled by kernel version, OS version, docker version, cadvisor version & cadvisor revision.
# TYPE cadvisor_version_info gauge
cadvisor_version_info{cadvisorRevision="8949c822",cadvisorVersion="v0.32.0",dockerVersion="1.13.1",kernelVersion="3.10.0-1160.80.1.el7.x86_64",osVersion="Alpine Linux v3.7"} 1
# HELP container_cpu_load_average_10s Value of container cpu load average over the last 10 seconds.
# TYPE container_cpu_load_average_10s gauge
container_cpu_load_average_10s{container_label_com_docker_compose_config_hash="",container_label_com_docker_compose_container_number="",container_label_com_docker_compose_depends_on="",container_label_com_docker_compose_image="",container_label_com_docker_compose_oneoff="",container_label_com_docker_compose_project="",container_label_com_docker_compose_project_config_files="",container_label_com_docker_compose_project_working_dir="",container_label_com_docker_compose_service="",container_label_com_docker_compose_version="",container_label_logging="",container_label_logging_jobname="",container_label_maintainer="",container_label_org_label_schema_group="",container_label_org_opencontainers_image_created="",container_label_org_opencontainers_image_revision="",container_label_org_opencontainers_image_source="",container_label_org_opencontainers_image_url="",id="/",image="",name=""} 0
이하 생략..

4. Grafana 대시보드에서 조회

- Grafana사이트에서 다운받은 대시보드로 조회한 화면

댓글남기기