docker와 prometheus를 활용한 모니터링 시스템 setting

sujin·2022년 9월 19일
1

prometheus

목록 보기
1/2

1. docker-compose.yml

docker-compose를 통해서 여러개의 컨테이너를 한번에 관리하고 실행할 수 있다.

prometheus와 grafana, node-exporter를 사용하여 모니터링 서비스를 구축한다. 이때, 세개의 컨테이너를 따로 관리하다보면 이후 수정사항이 생겼을 경우 일일이 변경해줘야한다는 문제점이 존재한다. 따라서, 이러한 불편함을 해결하기 위해서 다중컨테이너를 하나의 앱을 통해서 관리한다. 그때 우리는 docker compose를 사용하고 설정은 docker-compose.yml file을 통해서 정해준다. 이때, docker-compose.yml을 적용시키면 yml 파일에서 관리하는 다중컨테이너를 한번에 세팅해준다.

  • docker-compose.yml과 docker compose up

service : 사용하는 서비스를 설정한다. ex) node-exporter, prometheus, grafana 등
network : 통신시 사용하는 네트워크 목록
컨테이너 실행 순서도 관리가 가능하다.

docekr compose up 명령어를 통해서 docker-compose.yml의 설정을 적용시키고 다중 container app을 만들 수 있다.

log들이 terminal창에 계속 뜨는 것이 싫다면 docker compose up -d를 사용한다.

2. goland 환경에서 모니터링 서비스 띄우기

  • prometheus folder를 만들고 하위경로에 yml을 만든다.

  • docker-compose.yml
version: '3.8'

networks:
  monitoring:
    driver: bridge
    
volumes:
  prometheus_data: {}

services:
  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: unless-stopped
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    expose:
      - 9100
    networks:
      - monitoring

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: unless-stopped
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--web.enable-lifecycle'
    expose:
      - 9090
    networks:
      - monitoring
  • prometheus.yml
    docker compose가 읽을 prometheus.yml을 작성하여 node-exporter의 metric을 scraping하여 grafana에 내보내줄 수 있다.
global:
  scrape_interval: 1m #scraping 간격을 1분단위로 설정

scrape_configs:
  - job_name: "prometheus"
    scrape_interval: 1m
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node"
    static_configs:
      - targets: ["node-exporter:9100"]

  • docker compose up 을 terminal에서 실행
    그렇다면 경로에 grafana 폴더가 만들어질 뿐만 아니라 다중컨테이너 앱이 만들어져 하나의 앱 안에 3개의 container가 존재한다.
    이후, 한번에 docker compose down을 통해 한번에 정지시키고 다운시킬 수 있다.

결과적으로 docker desktop을 이용해서 확인해본다면?

다음과 같이 3개의 컨테이너가 하나의 앱 안에서 관리되고 있는 것을 확인할 수 있다.

참고

https://github.com/sujin-create/monitoring

2개의 댓글

comment-user-thumbnail
2023년 8월 15일

docker-compose.yml 파일에 grafana 서비스에 대한 내용이 없네요.

1개의 답글