도커로 프로메테우스 & 그라파나 띄우기 + 프로비저닝 기능까지 1

2024. 10. 13. 01:36·DevOps
728x90
반응형

 

 

이번 프로젝트에서 프로메테우스와 그라파나를 사용해 모니터링을 하게 되어서 정리용으로 포스팅..

 


 

Prometheus

🔥 "프로메테우스"는 그리스 로마 신화에 나오는 그 이름이 맞다. 미래를 예측하고 신들에게서 불을 훔쳐 인간에게 준 인물이기에 로고가 횃불 모양이며 미래에 발생 할 수 있는 문제를 예측하고 미리 알려줌으로써 장애를 방지한다는 모니터링 시스템의 특징과 잘 부합한다.

 

 

프로메테우스는 오픈소스 시스템 모니터링 및 경고 도구이다.

Prometheus는 시계열 데이터베이스(TSDB)를 사용하여 메트릭 데이터를 수집하고, 쿼리 및 시각화를 통해 시스템 상태를 모니터링하고 경고를 설정할 수 있다.

 

 

※ 매트릭 데이터는 특정 시스템이나 프로세스의 상태를 숫자로 표현한 데이터를 의미한다.

※ 시계열 데이터는 특정 시간 순서에 따라 측정된 데이터의 연속적인 집합을 의미한다. 쉽게 말해, 시간의 흐름에 따라 변화하는 값들을 순서대로 나열한 데이터이다.

 

 

Grafana

 

 

그라파나는 오픈소스 분석 및 시각화 플랫폼이다.

복잡한 데이터를 이해하기 쉬운 그래프, 차트, 테이블 등으로 표현하여 시스템의 상태를 한 눈에 파악할 수 있도록 도와주는 도구이다.

 

그라파나는 웹 서버 모니터링, 데이터베이스 모니터링, 네트워크 트래픽 분석, IoT 데이터 시각화 등에 사용된다.

 

 

그라파나와 프로메테우스를 함께 사용하는 이유

 

프로메테우스는 데이터를 수집하고 저장하는 역할을, 그라파나는 수집된 데이터를 시각화하여 이해하기 쉽도록 만들어주는 역할을 하기 때문에 두 도구가 서로 보완하며 강력한 모니터링 시스템을 구축하게 되기 때문.

 

 

 


 

 

파일 작성 이전 기초 설정

 

settings
├── prometheus
│   ├── config
│   │   └── prometheus.yml
│   │   
├── grafana
│   ├── provisioning
│   │   ├── alerting
│   │   ├── dashboards
│   │   └── datasources

 

 

먼저 프로메테우스와 그라파나의 설정 파일을 루트 디렉토리 위치의 settings에 넣어 관리할 것이고 후에 그라파나와 슬랙을 연동해서 알림을 받아올 때 사용할 슬랩 웹훅 URL은 외부로 노출되면 안되기 때문에 .env 안에 넣어 환경 변수로 전달해줄 것이다.

 

 

# .env

SLACK_WEBHOOK_URL=https://hooks.slack.com/services/웹훅 토큰

 

이 파일은 깃헙에도 올라가면 안되므로 커밋 전에 .gitignore에 추가해 무시해줘야하며 웹훅 URL 및 .env 파일 작성에 대한 것은 문서로 작성해 팀원들과 공유해야한다.

 

 


 

 

Docker로 프로메테우스와 그라파나 띄우기

 

 

docker-compose.yml

services:
    prometheus:
    image: prom/prometheus
    container_name: prometheus
    volumes:
      - ./settings/prometheus/config:/etc/prometheus
    ports:
      - 9090:9090
    command:
      - '--storage.tsdb.path=/prometheus'
      - '--config.file=/etc/prometheus/prometheus.yml'
    restart: always
    networks:
      - t4y

  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - 3000:3000
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=pickple
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_NOTIFIERS_CONTACTPOINT_URL=${SLACK_WEBHOOK_URL}
    volumes:
      - ./settings/grafana/provisioning/:/etc/grafana/provisioning/
    restart: always
    depends_on:
      - prometheus
    networks:
      - t4y


networks:
  t4y:
    driver: bridge

 

프로메테우스는 prometheus.yml 라는 설정 파일을 만들어줘야하므로 로컬 폴더에서 prometheus.yml을 읽을 위치를 볼륨에 적어준다.

 

📍 settings/prometheus/config/prometheus.yml

 

volumes:
      - ./settings/prometheus/config:/etc/prometheus

 

docker-compose.yml이 있는 위치를 기준으로 로컬 환경의 ./settings/prometheus/config 디렉토리와 도커 컨테이너 디렉토리 /etc/prometheus 를 바인드 마운트 해준다.

 

 

💡 바인드 마운트 Bind Mount : 컨테이너와 호스트 시스템 간의 파일 및 디렉토리를 공유하는 방식. 바인드 마운트를 사용하면 컨테이너가 호스트 시스템의 특정 디렉토리에 접근하거나 수정할 수 있게 된다.

 

    environment:
      - GF_SECURITY_ADMIN_PASSWORD=pickple
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_NOTIFIERS_CONTACTPOINT_URL=${SLACK_WEBHOOK_URL}
    volumes:
      - ./settings/grafana/provisioning/:/etc/grafana/provisioning/

 

 

  • GF_SECURITY_ADMIN_PASSWORD=pickple : 따로 계정 설정을 해두지 않는다면 그라파나의 기본 아이디/비밀번호는 admin/admin이다. 이 부분은 비밀번호만 설정해둔 것.
  • GF_USERS_ALLOW_SIGN_UP=false : admin 계정만 사용하기 위해 회원 가입 기능을 막아둠.
  • GF_NOTIFIERS_CONTACTPOINT_URL=${SLACK_WEBHOOK_URL} : .env 파일로 가져온 웹훅 URL을 그라파나 폴더 안으로 또 넘겨줘야 하므로 그라파나의 환경변수로 지정해준다.

 

그라파나 또한 바인드 마운트를 사용해 디렉토리를 연결시켜준다.

 

    depends_on:
      - prometheus

 

 

depends_on은 컨테이너 간의 의존성을 정의할 때 사용되며 이는 그라파나 컨테이너가 실행되기 전에 프로메테우스 컨테이너가 먼저 실행되도록 지정한다는 뜻이다.

 

 

prometheus.yml

global:
  scrape_interval: 10s
  scrape_timeout: 10s
  evaluation_interval: 2m

scrape_configs:
  - job_name: 'eureka-server'
    metrics_path: '/actuator/prometheus'
    scheme: 'http'

    static_configs:
      - targets: ['host.docker.internal:19090']
        labels:
          service: 'server'


# ... 생략 ...

 

prometheus.yml에는 프로메테우스 서버가 수집할 메트릭 데이터의 대상, 스크래핑 간격, 경고 규칙 등을 정의해준다.

 

  • scrape_interbal: 10s : 프로메테우스가 타겟 시스템에서 메트릭 데이터를 수집하는 간격을 10초로 설정.
  • scrape_timeout: 10s : 프로메테우스가 타겟 시스템에서 메트릭 데이터를 수집하는 동안 응답을 기다리는 최대 시간을 10초로 설정. 만약 10초 내에 응답을 받지 못 하면 해당 타겟에 대한 스크래핑은 실패 처리됨.
  • evaulation_interval: 2m : 프로메테우스가 설정된 규칙을 평가하는 간격을 2분으로 설정.
  • scrape_configs: 프로메테우스의 타겟 targets을 지정하는 부분. 어떤 시스템이나 서비스에서 메트릭 데이터를 수집할 지 지정.

 

scrape_configs의 생략된 부분들은 적혀 있는 유레카 서버 외에도 프로메테우스가 모니터링을 할 대상들인 게이트 웨이와 그 외 여러 개의 마이크로서비스들에 대한 정보들을 적었다.

 

docker-compose up -d

 

이 파일을 로컬 디렉토리의 settings/prometheus/config 안에 넣어두고 docker-compose 파일을 실행시킨다.

 

 

컨테이너가 모두 잘 실행됨을 확인 할 수 있다.

 

localhost:9090 으로 접속하면 프로메테우스 서버 UI를 확인 할 수 있다.

 

 

그 중 Targets를 확인해보면 아까 scrape_configs로 지정한 타겟들을 잘 찾고 있음을 확인 할 수 있다.

 

※ 서버와 같은 경우 실행하지 않으면 unhealthy로 뜨니 꼭 서버와 모든 서비스를 전부 run 한 상황에서 확인.

 

 

 

 

localhost:3000에 접속하면 그라파나 UI를 확인 할 수 있다.

 

위 도커 컴포즈 파일에서 작성한대로 admin/pickple로 로그인.

따로 설정하지 않았다면 admin/admin으로 로그인 후 비밀번호 변경(선택)

 

 

 

 

그라파나 홈페이지가 잘 뜬다.

이제 이 쪽에서 대시보드 및 데이터 소스 등을 설정해주면된다.

 

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'DevOps' 카테고리의 다른 글

도커로 프로메테우스 & 그라파나 띄우기 + 프로비저닝 기능까지 2  (2) 2024.10.14
Docker로 Cassandra 띄우기 및 실습하기  (1) 2024.10.04
[✉️ Kafka] Kafka 설치 및 예제로 실습해보기  (2) 2024.09.27
[✉️ Kafka] Kafka 이해하기2 - Zookeper, Broker, Message  (2) 2024.09.27
[✉️ Kafka] Kafka 이해하기1 - Producer, Consumer, Topic, Partition  (0) 2024.09.27
'DevOps' 카테고리의 다른 글
  • 도커로 프로메테우스 & 그라파나 띄우기 + 프로비저닝 기능까지 2
  • Docker로 Cassandra 띄우기 및 실습하기
  • [✉️ Kafka] Kafka 설치 및 예제로 실습해보기
  • [✉️ Kafka] Kafka 이해하기2 - Zookeper, Broker, Message
waVwe
waVwe
    반응형
  • waVwe
    waVwe 개발 블로그
    waVwe
  • 전체
    오늘
    어제
    • ALL (184)
      • Python (1)
      • Spring (15)
      • DevOps (10)
      • Git (6)
      • JAVA (4)
      • C (22)
      • 코테 문제 풀이 (124)
        • 프로그래머스 (43)
        • 백준 (2)
        • 정올 (64)
        • SW Expert Academy (1)
        • 온코더 oncoder (14)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 🐙 Github
  • 공지사항

  • 인기 글

  • 태그

    정올
    스파르타코딩
    알고리즘
    스파르타코딩클럽
    docker
    자료구조
    깃헙
    devops
    코테
    깃
    스프링부트
    이진트리
    스프링
    C
    springboot
    도커
    연결리스트
    java
    자바
    형변환
    CI/CD
    프로그래머스
    MSA
    Til
    온코더
    while문
    내일배움캠프
    progate
    아파치카프카
    C언어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
waVwe
도커로 프로메테우스 & 그라파나 띄우기 + 프로비저닝 기능까지 1
상단으로

티스토리툴바