현대 소프트웨어 개발 환경은 점점 더 컨테이너화를 도입하고 있습니다. 기존의 리눅스 호스트에서 Prometheus를 사용하여 메트릭을 수집하던 방식에서 벗어나, 컨테이너화된 환경에서도 효과적으로 모니터링을 수행하려면 새로운 도구와 설정이 필요합니다. 이 글에서는 컨테이너화된 환경에서 Docker 엔진 및 컨테이너 메트릭을 수집하기 위한 방법을 설명합니다.
Docker 엔진에서 메트릭을 수집하기 위해 먼저 Docker를 실행하는 호스트 머신에 설정을 추가해야 합니다. /etc/docker/
경로에 daemon.json
파일을 생성하고, 다음과 같이 구성합니다:
{
"metrics-addr": "IP_ADDRESS:PORT",
"experimental": true
}
이 설정에서 metrics-addr
는 메트릭을 노출할 IP 주소와 포트를 지정하며, experimental
옵션은 이 기능이 실험적임을 나타냅니다. 설정 후 Docker를 재시작해야 합니다.
Docker가 다시 시작되면, 이제 메트릭을 확인하기 위해 curl IP_ADDRESS:PORT/metrics
명령을 실행할 수 있습니다. 이 주소는 위의 설정에서 지정한 포트와 일치패야 합니다.
Prometheus에서 Docker 메트릭을 수집하려면 prometheus.yml
파일에 다음과 같이 새로운 작업을 추가합니다:
scrape_configs:
- job_name: 'docker'
static_configs:
- targets: ['IP_ADDRESS:PORT']
여기서 IP_ADDRESS
와 PORT
는 Docker 가 실행중인 호스트 머신의 IP와 위에서 설정한 포트를 입력합니다.
컨테이너별 메트릭을 수집하려면 cAdvisor
라는 도구를 사용해야 합니다. cAdvisor는 각 컨테이너의 CPU 사용량, 메모리 사용량, 가동 시간 등의 정보를 제공합니다.
cAdvisor를 설정하려면 Docker Compose 파일을 사용하여 컨테이너를 구성할 수 있습니다. 예시 설정은 다음과 같습니다:
version: '3'
services:
cadvisor:
image: google/cadvisor:latest
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
이 설정을 통해 cAdvisor 컨테이너를 실행하고, 메트릭을 curl localhost:8080/metrics
명령을 통해 확인할 수 있습니다.
Prometheus에 cAdvisor 메트릭을 추가하려면 prometheus.yml
파일에 다음과 같은 작업을 추가합니다:
scrape_configs:
- job_name: 'cadvisor'
static_configs:
- targets: ['IP_ADDRESS:8080']
Docker 메트릭은 주로 Docker 엔진의 성능을 모니터링합니다. 예를 들어, Docker가 사용하는 CPU 자원, 실패한 이미지 빌드 수, 컨테이너 작업 처리 시간 등의 정보를 제공합니다. 반면 cAdvisor는 각 컨테이너의 CPU 및 메모리 사용량, 프로세스 수, 컨테이너의 가동 시간 등의 세부적인 정보를 제공합니다.
따라서, Docker 엔진에 대한 전반적인 정보를 원할 때는 Docker 메트릭을 사용하고, 각 컨테이너의 세부적인 정보를 원할 때는 cAdvisor를 사용하는 것이 좋습니다.
컨테이너화된 환경에서도 안정적인 모니터링을 위해 Prometheus와 cAdvisor를 활용하면 효율적으로 시스템 상태를 파악할 수 있습니다. 이를 통해 시스템의 성능 최적화 및 문제 해결을 보다 효과적으로 할 수 있습니다.