Docker Compose Monitoring 구성 완벽 가이드! Container 상태와 서버 성능 모니터링 방법 알아보기

서버 운영에서 Container를 실행하는 것만큼 중요한 것이 현재 상태를 지속적으로 확인하는 것입니다.

서비스가 정상적으로 동작하는지 확인하지 않으면 다음과 같은 문제가 발생할 수 있습니다.

Application 오류

↓

Container 장애

↓

서비스 중단

↓

사용자 접속 불가

특히 Production 환경에서는 다음 정보를 지속적으로 확인해야 합니다.

  • CPU 사용량
  • Memory 사용량
  • Disk 사용량
  • Network 상태
  • Container 실행 상태
  • Database 상태
  • Application 응답 상태

Docker Compose 환경에서는 다양한 방법으로 Monitoring 시스템을 구성할 수 있습니다.

기본 구조:

Server

↓

Docker Engine

↓

Container Monitoring

↓

Metric 수집

↓

Dashboard 표시

이번 글에서는 Docker Compose 기본 Monitoring 방법부터 Docker Stats, Healthcheck, Prometheus, Grafana 연동, Production 서버 모니터링 구조까지 알아보겠습니다.

Docker Compose Monitoring이 필요한 이유

Container는 실행 중이라고 항상 정상 상태를 의미하지 않습니다.

예:

Container 상태

↓

running

하지만 내부 Application:

오류 발생

↓

응답 불가

가능합니다.

따라서 단순히 실행 여부가 아니라 다음 상태를 확인해야 합니다.

Container

↓

Resource

↓

Application

↓

Service

전체 상태 확인이 필요합니다.

Docker Compose 기본 상태 확인

가장 기본적인 확인 방법:

docker compose ps

결과:

NAME

STATUS

PORT

확인 가능:

  • Container 실행 여부
  • Port 연결
  • Service 상태

예:

app

running

3000

Docker Compose Resource 확인

Docker 기본 Monitoring 명령:

docker stats

출력:

CONTAINER

CPU %

MEM USAGE

NET I/O

BLOCK I/O

확인 항목:

CPU 사용량

Application 과부하 확인

Memory 사용량

Memory Leak 확인

Network

트래픽 확인

Disk I/O

Storage 문제 확인

Docker Compose 특정 Container Monitoring

특정 Container 확인:

docker stats container-name

예:

docker stats project-app-1

실시간 확인:

CPU 증가

↓

Memory 증가

↓

장애 가능성 확인

Docker Compose System 사용량 확인

전체 Docker 사용량:

docker system df

확인:

  • Image 용량
  • Container 용량
  • Volume 용량

상세:

docker system df -v

결과:

Images

Containers

Volumes

Docker Compose Healthcheck 구성

Container가 실행 중인지보다 실제 서비스 상태 확인이 중요합니다.

Healthcheck를 사용하면 Application 상태를 확인할 수 있습니다.

예:

services:

  app:

    image: my-app

    healthcheck:

      test:

        - CMD

        - curl

        - localhost:3000

      interval: 30s

      timeout: 10s

      retries: 3

구조:

Container 실행

↓

Healthcheck 실행

↓

정상 여부 판단

상태:

healthy

unhealthy

Docker Compose Healthcheck 확인

확인:

docker compose ps

결과:

app

running (healthy)

문제:

app

unhealthy

의미:

Container는 실행 중이지만 Application 문제가 있을 수 있습니다.

Docker Compose Monitoring과 Restart 정책

장애 발생 시 자동 복구를 위해 Restart 정책을 사용합니다.

예:

restart: unless-stopped

동작:

Container 오류

↓

자동 재시작

↓

서비스 복구

주요 옵션:

no

기본값

자동 재시작 없음

always

항상 재시작

unless-stopped

중지하지 않는 한 재시작

on-failure

오류 발생 시 재시작

Production에서는:

restart: unless-stopped

많이 사용합니다.

Docker Compose Monitoring 로그 확인

장애 분석에서 로그는 가장 중요합니다.

전체 로그:

docker compose logs

특정 Service:

docker compose logs app

실시간:

docker compose logs -f app

확인:

  • Error 메시지
  • Connection 문제
  • Application 오류

Docker Compose Prometheus Monitoring 구성

대규모 서버에서는 Metric 수집 도구를 사용합니다.

대표 구성:

Container

↓

Prometheus

↓

Metric 저장

↓

Grafana Dashboard

Prometheus 역할:

  • CPU Metric 수집
  • Memory Metric 수집
  • Container 상태 저장

Grafana 역할:

  • Dashboard 표시
  • 그래프 생성
  • Alert 관리

Docker Compose Prometheus 예제 구조

구성:

docker-compose.yml

↓

Application

↓

Node Exporter

↓

Prometheus

↓

Grafana

구조:

Server

↓

Metric 수집

↓

Dashboard 확인

Docker Compose Grafana Dashboard 구성

Grafana를 연결하면 시각적으로 확인할 수 있습니다.

확인 가능:

  • CPU 그래프
  • Memory 그래프
  • Network Traffic
  • Disk 사용량

예:

CPU

████████

Memory

██████

Network

████

운영자는 Dashboard에서 전체 서버 상태를 확인할 수 있습니다.

Docker Compose Alert 설정

Monitoring은 확인뿐 아니라 알림도 중요합니다.

예:

CPU 90% 이상

↓

Alert 발생

또는:

Memory 부족

↓

관리자 알림

활용:

  • Email
  • Slack
  • Telegram
  • Webhook

Docker Compose Database Monitoring

Database도 별도 확인이 필요합니다.

확인:

MySQL:

Connection

Query

Slow Query

Lock

PostgreSQL:

Connection

Transaction

Query Performance

Redis:

Memory

Key Count

Hit Rate

Docker Compose Disk Monitoring

서버 장애의 흔한 원인:

Disk Full

확인:

df -h

Docker 용량:

docker system df

관리:

  • 오래된 Log 삭제
  • 불필요 Image 삭제
  • Backup 정리

Docker Compose Production Monitoring 구조

실제 운영 환경:

사용자

↓

Nginx

↓

Application Container

↓

Database Container


Monitoring

↓

Prometheus

↓

Grafana

↓

Alert

구성 요소:

Application:

서비스 상태

Docker:

Container 상태

Prometheus:

Metric 수집

Grafana:

Dashboard

Alert:

문제 알림

Docker Compose Monitoring Best Practice

추천:

  • Healthcheck 설정
  • Resource 모니터링
  • Log 관리
  • Disk 확인
  • Alert 구성
  • Dashboard 운영

운영 체크 항목:

매일 확인

↓

Container 상태

↓

CPU

↓

Memory

↓

Disk

↓

Error Log

Docker Compose 장애 대응 순서

문제 발생:

1단계:

Container 확인

docker compose ps

2단계:

Resource 확인

docker stats

3단계:

Log 확인

docker compose logs

4단계:

Health 상태 확인

5단계:

Restart 또는 복구 진행

자주 묻는 질문

docker stats만으로 충분한가요?

소규모 서버는 가능하지만 Production에서는 Dashboard와 Alert 구성이 좋습니다.

Healthcheck는 꼭 필요한가요?

운영 환경에서는 사용하는 것이 좋습니다.

Monitoring 도구는 어떤 것을 사용하나요?

소규모는 Docker 기본 명령어, 대규모는 Prometheus와 Grafana 조합을 많이 사용합니다.

Container가 running이면 정상인가요?

아닙니다.

Application 내부 오류가 있을 수 있어 Healthcheck가 필요합니다.

마무리

Docker Compose Monitoring은 안정적인 서버 운영을 위한 핵심 과정입니다.

Container 상태만 확인하는 것이 아니라 CPU, Memory, Disk, Application 상태까지 함께 관리해야 장애를 빠르게 발견할 수 있습니다.

Production 서버의 기본 Monitoring 구조:

Docker Compose

↓

Container

↓

Metric 수집

↓

Dashboard

↓

Alert

↓

장애 대응

다음 글에서는 Docker Compose 환경에서 발생하는 오류를 분석하기 위한 Logging 관리 방법을 알아보겠습니다.

댓글 남기기