서버 운영에서 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 부족
↓
관리자 알림
활용:
- 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 관리 방법을 알아보겠습니다.