서버 운영에서 Metrics 데이터를 수집하는 것만으로는 충분하지 않습니다.
수집한 데이터를 사람이 쉽게 확인하고 분석할 수 있는 화면이 필요합니다.
Prometheus:
Metrics 저장
Grafana:
Metrics 시각화
구조:
Container
↓
Exporter
↓
Prometheus
↓
Grafana Dashboard
Grafana를 사용하면 CPU, Memory, Network, Application 상태를 실시간 그래프로 확인할 수 있습니다.
이번 글에서는 Docker Compose 환경에서 Grafana 설치부터 Prometheus 연결, Dashboard 구성, Server Monitoring, Production 운영 구조까지 알아보겠습니다.
Grafana란 무엇인가?
Grafana는 다양한 데이터 소스를 연결하여 시각화하는 Monitoring Dashboard 플랫폼입니다.
지원 데이터:
- Prometheus
- Loki
- Elasticsearch
- MySQL
- PostgreSQL
대표 활용:
데이터 수집
↓
그래프 표시
↓
상태 분석
Prometheus와 Grafana 역할 차이
Prometheus:
Metrics 수집
↓
저장
Grafana:
저장된 데이터
↓
Dashboard 표시
구조:
Exporter
↓
Prometheus
↓
Grafana
↓
사용자
Docker Compose Grafana 구성
docker-compose.yml:
services:
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
volumes:
grafana-data:
실행:
docker compose up -d
확인:
docker ps
결과:
grafana running
Docker Compose Grafana 초기 설정
접속:
http://server-ip:3000
기본 로그인:
Username:
admin
Password:
admin
첫 로그인 후 비밀번호 변경이 필요합니다.
Docker Compose Grafana와 Prometheus 연결
Grafana는 데이터를 직접 수집하지 않습니다.
Prometheus를 Data Source로 연결합니다.
구조:
Grafana
↓
Prometheus
↓
Metrics
설정:
Data Source 추가
Prometheus 선택
↓
URL 입력
↓
Save & Test
Docker Network 환경:
http://prometheus:9090
Docker Compose Grafana Dashboard 생성
Dashboard는 여러 Panel로 구성됩니다.
예:
Server Dashboard
├── CPU Usage
├── Memory Usage
├── Disk Usage
├── Network Traffic
└── Container Status
Panel:
하나의 그래프 화면
Docker Compose CPU Monitoring Dashboard
CPU 사용량 표시:
PromQL:
rate(node_cpu_seconds_total[5m])
확인:
현재 CPU 사용률
CPU 증가 추세
활용:
- 서버 부하 확인
- Scaling 판단
Docker Compose Memory Monitoring Dashboard
Memory 확인:
node_memory_MemAvailable_bytes
확인:
현재 사용 Memory
남은 Memory
문제 감지:
Memory 부족
↓
Container 장애
Docker Compose Container Dashboard 구성
Container 상태 확인:
표시:
- Container 개수
- CPU 사용량
- Memory 사용량
- Restart 횟수
구조:
Container
↓
cAdvisor
↓
Prometheus
↓
Grafana
Docker Compose Network Dashboard
Network Traffic 확인:
Metrics:
Receive Bytes
Transmit Bytes
활용:
- Traffic 증가 확인
- Network 장애 분석
Docker Compose Application Dashboard
Application Metrics:
예:
Request Count
Response Time
Error Rate
구조:
Application
↓
Metrics Exporter
↓
Prometheus
↓
Grafana
Grafana Template Dashboard 활용
직접 만들 수도 있지만 기존 Dashboard를 가져올 수 있습니다.
방법:
Dashboard
↓
Import
↓
ID 입력
↓
Load
대표 Dashboard:
- Node Exporter Dashboard
- Docker Monitoring Dashboard
- Kubernetes Dashboard
Docker Compose Grafana Alert 설정
Grafana에서도 Alert 설정이 가능합니다.
예:
CPU 90% 이상
↓
Alert 발생
구조:
Grafana
↓
Alert Rule
↓
Notification
알림:
- Slack
- Webhook
Docker Compose Grafana 데이터 유지
Grafana 설정도 Volume 저장이 필요합니다.
구조:
Grafana Container
↓
Volume
↓
Dashboard 저장
Volume 없으면:
Container 삭제
↓
Dashboard 삭제
Docker Compose Production Monitoring 구조
실제 운영:
Application
↓
Exporter
↓
Prometheus
↓
Grafana
↓
Alertmanager
↓
Engineer
Docker Compose Grafana 보안 설정
운영 환경 권장:
HTTPS 적용
HTTPS
↓
Grafana
계정 관리
- 강력한 Password
- 사용자 권한 설정
외부 공개 제한
Private Network 사용
Docker Compose Grafana 운영 Best Practice
추천:
- Dashboard 백업
- Data Source 관리
- Alert 설정
- User 권한 관리
- HTTPS 적용
- Version 관리
운영 흐름:
Metrics 수집
↓
Dashboard 표시
↓
문제 발견
↓
Alert
↓
대응
자주 묻는 질문
Grafana만 설치하면 Monitoring이 되나요?
아닙니다.
데이터를 제공하는 Prometheus 같은 Metrics 시스템이 필요합니다.
Grafana와 Prometheus는 같이 사용해야 하나요?
일반적으로 함께 사용하는 경우가 많습니다.
Dashboard는 직접 만들어야 하나요?
기존 Template을 가져와 수정할 수 있습니다.
작은 서버에서도 사용할 수 있나요?
가능합니다.
기본 Server Dashboard부터 시작하면 됩니다.
마무리
Docker Compose Grafana 구성은 서버 상태를 한눈에 확인하고 빠르게 장애를 발견하기 위한 핵심 Monitoring 구조입니다.
최종 구조:
Container
↓
Metrics
↓
Prometheus
↓
Grafana Dashboard
↓
Alert
Production 서버 운영에서는 단순히 서비스를 실행하는 것이 아니라 상태를 지속적으로 관찰하고 문제를 빠르게 해결하는 체계가 필요합니다.
다음 글에서는 장애 발생 시 자동으로 알림을 보내는 Docker Compose Alertmanager 구성 방법을 알아보겠습니다.