도커로 grafana, prometheus 서버 띄우기

2025. 2. 24. 13:24·Devops

이렇게 멋진 대시보드 한 번 가져보자!

docker-compose.monitoring.yml 파일 작성

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    ports:
      - "9090:9090"
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--web.external-url=/prometheus'
    volumes:
      - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml
    networks:
      - frontend-network
    depends_on:
      - cadvisor

  grafana:
    image: grafana/grafana-oss
    container_name: grafana
    expose:
      - "3002"
    ports:
      - "3002:3002"
    environment:
      - GF_SERVER_ROOT_URL=http://localhost:3002/grafana
      - GF_SERVER_SERVE_FROM_SUB_PATH=true
    volumes:
      - grafana:/var/lib/grafana
    networks:
      - frontend-network
    depends_on:
      - loki

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:v0.47.0
    container_name: cadvisor
    ports:
      - "8082:8082"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    networks:
      - frontend-network
      - backend-network
    depends_on:
      - backend
      - frontend
      - adminer
      - mysql

  loki:
    image: grafana/loki:latest
    container_name: loki
    ports:
      - 3100:3100
    networks:
      - frontend-network
    volumes:
      - ./monitoring/loki-config.yml:/etc/loki/loki-config.yaml

  promtail:
    image: grafana/promtail:latest
    container_name: promtail
    networks:
      - frontend-network
      - backend-network
    volumes:
      - ./monitoring/promtail-config.yml:/etc/promtail/promtail-config.yaml
    depends_on:
      - loki

volumes:
  grafana:

기존 docker-compose.prod.yml에 include추가하기

 

docker compose -f docker-compose.prod.yml up

 

으로 명시적으로 docker-compose 파일을 ssh 상에서 띄우면 docker-compose.monitoring.yml 도 같이 작동한다.

include:
  - docker-compose.monitoring.yml

services:

  nginx_proxy:
    image: jc21/nginx-proxy-manager:latest
    container_name:  nginx_proxy_manager

 

SSL 인증서 받은 도메인에 경로 추가

Nginx proxy manager - proxy host - custom locations에 추가한 경로에 / 으로 구분해 각 컨테이너로 라우팅해준다.

관리자가 <your:domain>/prometheus로 접속할 수 있게 해준 것이다.

 

Prometheus 확인 

 

ec2 방화벽도 그에 맞게 열어주었다. sudo ufw status

Grafana 띄우기

Nginx proxy manager 로 경로 설정 후, 일단 처음 접속하면 처음에는 별 화면이 없어서 놀랄 수 있다 오른쪽 상단 로그인 후 (최초 로그인 시 id: admin, pw: admin) 최초 비번 설정 변경 후 데이터 소스를 추가할 수 있다.

add data source - prometheus 클릭

 

밑의 나머지 설정은 그대로 두고 save&test

알맞게 설정되면

가 뜬다. loki도 똑같이 http://loki:3100으로 추가하기

 

잘 추가된 모습을 볼 수 있다.

 

대시보드 구성하기

오른쪽 상단 + - import dashboard 클릭

대시보드 id 19792 입력 후 로드 클릭.  cadvisor 기반 dashboard 템플릿 id이다.

데이터 소스로 prometheus 클릭 후 가져오기

 

아름다운 대시보드가 완성되었다.

 

로그기반 대시보드 구성

다중컨테이너로 구성된 docker compose up 하다보면 로그가 너무 많이 뜨는 문제가 있다. 이를 필터로 볼 수 있게 하고 싶었다.

 

오른쪽 상단 + - new dashboard  - 오른쪽 상단 settings - variables

 

원하는 대시보드 구성요소 설정 후

Add

최종 프로젝트 기술 스택

'Devops' 카테고리의 다른 글

프리티어 EC2 성능과 도커 이슈  (0) 2025.03.04
Locust로 실제 EC2 서버 부하 테스트 해보기 (xlarge 인스턴스)  (3) 2025.03.02
Docker 시작하기 - 2 프로젝트 적용  (1) 2025.01.19
Docker 시작하기 - 1  (1) 2025.01.07
CloudFlare Tunnel로 쉽게 웹사이트 배포하는 방법  (1) 2024.11.23
'Devops' 카테고리의 다른 글
  • 프리티어 EC2 성능과 도커 이슈
  • Locust로 실제 EC2 서버 부하 테스트 해보기 (xlarge 인스턴스)
  • Docker 시작하기 - 2 프로젝트 적용
  • Docker 시작하기 - 1
maxwithjude
maxwithjude
maxwithjude 님의 블로그 입니다.
  • maxwithjude
    maxwithjude 님의 블로그
    maxwithjude
  • 전체
    오늘
    어제
    • 분류 전체보기 (30)
      • 네트워크 (2)
      • 프론트 (2)
      • Devops (7)
      • 데이터베이스 (6)
      • 영어회화 + 자격증 (2)
      • 개발 프로젝트 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    버튜버
    채팅api
    티스토리챌린지
    mysql
    오블완
    센드버드
    Sendbird
    버츄얼 모델
    db 락
    vroid studio
    db 격리수준
    부하테스트
    버츄얼 모델 프로젝트
    오픽주엽
    AWS
    싸피
    EC2
    innodb
    mysql #db #database #성능 최적화
    오픽후기
    vue3
    osi 응용계층
    db 압축
    ssl/tls
    인덱스
    mysql에러로그
    Vtuber
    Docker
    Nest.js
    typeorm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
maxwithjude
도커로 grafana, prometheus 서버 띄우기
상단으로

티스토리툴바