Ubuntu 24.04에 Prometheus 메트릭 수집 서버 배포

발행: (2026년 5월 27일 AM 12:22 GMT+9)
3 분 소요
원문: Dev.to

개요

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를 참고하세요.

0 조회
Back to Blog

관련 글

더 보기 »