Ubuntu 24.04에 Prometheus 메트릭 수집 서버 배포
개요
Prometheus는 HTTP를 통해 타깃을 스크랩하고 로컬 TSDB에 시계열 메트릭을 저장하는 오픈소스 시스템 모니터링 및 알림 툴킷입니다. 강력한 쿼리 언어 PromQL을 제공하며 Grafana와 네이티브하게 통합되어 시각화를 지원합니다. 이 가이드는 Docker Compose를 사용해 Ubuntu 24.04에 Prometheus를 배포하고, Traefik이 자동 HTTPS를 처리하도록 설정하는 방법을 보여줍니다.
디렉터리 설정
mkdir -p ~/prometheus-monitoring/{prometheus-data,prometheus-config}
cd ~/prometheus-monitoring
데이터 디렉터리 소유권 설정
sudo chown -R 65534:65534 prometheus-data
환경 파일 (.env)
.env 파일을 만들고 다음 변수를 추가합니다:
DOMAIN=prometheus.example.com
LETSENCRYPT_EMAIL=admin@example.com
Prometheus 설정 (prometheus-config/prometheus.yml)
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
Docker Compose 매니페스트 (docker-compose.yaml)
services:
traefik:
image: traefik:v3.6
container_name: traefik
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencrypt.acme.email=${LETSENCRYPT_EMAIL}"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- "letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
restart: unless-stopped
prometheus:
image: prom/prometheus:latest
container_name: prometheus
hostname: prometheus
expose:
- "9090"
volumes:
- "./prometheus-config/prometheus.yml:/etc/prometheus/prometheus.yml"
- "./prometheus-data:/prometheus"
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
labels:
- "traefik.enable=true"
- "traefik.http.routers.prometheus.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.prometheus.entrypoints=websecure"
- "traefik.http.routers.prometheus.tls.certresolver=letsencrypt"
- "traefik.http.services.prometheus.loadbalancer.server.port=9090"
restart: unless-stopped
volumes:
letsencrypt:
서비스 시작
docker compose up -d
서비스가 실행 중인지 확인
docker compose ps
로그 보기 (선택 사항)
docker compose logs
Prometheus에 접근
브라우저에서 https://prometheus.example.com을 엽니다. Prometheus UI의 표현식 입력창에 기본 PromQL 쿼리를 입력해 스크랩이 정상인지 확인해 보세요:
up– 모든 타깃의 스크랩 상태process_cpu_seconds_total– Prometheus 자체의 CPU 사용량process_resident_memory_bytes– Prometheus 자체의 메모리 사용량
Prometheus가 실행 중이며 HTTPS를 통해 메트릭을 제공하고 있어야 합니다.
다음 단계
- 애플리케이션, node exporter, 인프라 등 스크랩 대상 추가
- Grafana에 Prometheus를 데이터 소스로 연결해 대시보드 구축
- 알림 규칙을 설정하고 Alertmanager를 통해 알림을 라우팅
참고
전체 가이드와 추가 팁은 원문 기사인 Vultr Docs를 참고하세요.