Backend/강의

[🐋 Docker + CI/CD] 3-2. Docker 모니터링과 로깅

가지코딩 2025. 7. 2. 23:08

🐋 목차

  1. Docker 모니터링
  2. Container 리소스 모니터링
  3. Container 로깅

🩵 학습 목표

  • Docker 컨테이너를 모니터링하고 로깅을 확인할 수 있습니다.

1. Docker 모니터링

Docker 모니터링

  • 컨테이너가 현재 어떤 상태로 실행되고 있는지 확인하는 활동
  • 확인 가능한 정보
    • CPU 사용량
    • 메모리 사용량
    • 네트워크 트래픽
    • 디스크 I/O
  • 모니터링의 중요성
    • 과도한 자원 사용 감지
    • 병목 현상 파악
    • 시스템 최적화 및 안정성 확보

2. Container 리소스 모니터링

docker stats: 컨테이너 실시간 모니터링

docker stats
  • 실행 중인 모든 컨테이너의 자원 사용 현황을 실시간으로 표시
  • 출력 정보:
    • CPU %
    • 메모리 사용량 / 제한
    • 네트워크 I/O
    • 디스크 I/O

* 특정 컨테이너만 보고 싶다면?

docker stats <컨테이너 이름 또는 ID>

 

 

htop: 시스템 리소스 모니터링

  • 리눅스 시스템 전체의 자원 사용 상태를 직관적으로 보여주는 CLI 도구
docker run --name test-tools -ti -d ubuntu:22.04
docker exec -ti test-tools /bin/bash
apt update && apt install -y htop
htop

 

 

df와 du: 디스크 사용량 확인

  • df: 시스템 전체 디스크 사용량
docker exec -ti test-tools /bin/bash
df -h
exit

 

  • du: 디렉토리별 디스크 사용량
docker exec -ti test-tools /bin/bash
du -sh              # 현재 디렉토리 총 사용량
du -h --max-depth=1 # 하위 디렉토리 1단계까지 사용량
exit

3. Container 로깅

기본 로깅 방식

  • Docker는 모든 컨테이너의 stdout / stderr 출력을 캡처하여, 기본적으로 json-file 로깅 드라이버를 사용해 로그 파일에 기록한다.
/var/lib/docker/containers/<컨테이너ID>/<컨테이너ID>-json.log

 

 

로그 확인 예제

docker run --name logs-test --rm -d ubuntu:22.04 /bin/bash -c 'while true; do date; sleep 1; done'
docker logs logs-test                   # 전체 출력
docker logs -f logs-test                # 실시간 로그 보기
docker logs -f --tail 10 logs-test      # 마지막 10줄부터 보기
# 로그 파일 경로 확인:
docker inspect logs-test --format "{{.LogPath}}"

 

 

로그 파일 관리: 로테이션 설정

  • 실제 운영 환경에서는 로그가 계속 쌓이기 때문에, 크기 제한 및 파일 개수 제한이 필요하다.
    • max-size: 개별 로그 파일의 최대 크기
    • max-file: 보관할 최대 파일 개수
docker run -d \
  --log-driver json-file \
  --log-opt max-size=10m \
  --log-opt max-file=10 \
  --name nginxtest \
  --restart always \
  -p 80:80 -p 443:443 \
  nginx:latest