프로메테우스(Prometheus), 그라파나(Grafana)를 Docker Compose로 설치하기

2024. 2. 8. 16:10·Linux
728x90

1. 시작하기에 앞서...

리눅스 서버(CentOS)에서 프로메테우스, 그라파나를 설치할 때 Docker Compose로 설치하는것과 로컬에 설치하는 것에 대해서 정확히 자신이 원하는 환경이 무엇인지 어떻게 관리를 할것이고 이러한 상황에 따른 고려를 하고 설치하는 것이 좋을 것이다.

  • Docker Compose로 설치할 경우:
    구축이 빠르고 여러개의 컨테이너를 패키지화하여 한번에 사용이 가능하기 때문이기도하다
    구축이 빠르다는 건 Docker Hub에서 이미 이미지로 올려둔 것으로 설치가 가능하기 때문이다.
    컨테이너를 패키지화 한다는 건 프로메테우스와 그라파나 각각 2개의 컨테이너를 Docker로 설치할 경우 두개 별도로 컨테이너를 올리고 내리고 해야 하지만 Docker Compose를 이용하면 한번에 이 두개의 컨테이너를 올리고 내릴수있다.
  • 로컬에 설치할 경우:
    프로메테우스와 그라파나를 직접 다운로드 받고 로컬 서버에 설치하면 물론 설치하는 시간이 그리 오래걸리진않고 포트 관련 이슈도 없었다. 하지만 하나하나 서비스를 올려줘야하는 단점이있었지만 그리 큰 단점으로 다가오진 않았다

2. 프로메테우스와 그라파나 간단 설명

프로메테우스와 그라파나는 서로 각각 다른 역활을 하고 Node-Exproter도 미리 설명한다.

  • 프로메테우스: Prometheus는 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 제공하는 오픈 소스 모니터링 시스템이다.
  • Node-Exproter: 서버 시스템(cpu, loadAvg, memory) 및 네트워크 정보를 수집하여 메트릭(metric) API로 제공해준다.
  • 그라파나: 수집된 데이터를 보기 좋게 시각화하여 보기 좋게 사용할 수 있는 기능을 제공한다.

3. Node_exporter 설치

  1. Docker Compose로 구축을 하더라도 이 API모듈은 로컬에 설치하기 때문에 어디에 설치할 것인지 지정하고 해당 경로로 이동합니다.
    나는 '/appstore' 경로에 설치하였습니다.
$ cd /appstore
  1. 설치할 Node_exporter를 다운로드 받고 압축을 해제한다.
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
$ tar zxvf node_exporter-1.7.0.linux-amd64.tar.gz
  1. 압축이 해제된 파일을 명칭을 'node_exporter-1.7.0.linux-amd64' 를 'node_exporter' 로 변경하였다.
$ mv node_exporter-1.7.0.linux-amd64
$ mv node_exporter-1.7.0.linux-amd64 node_exporter
  1. Node_exporter를 서비스로 지정하여 시작/중지할 수 있도록 해야 한다.
$ vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/appstore/node_exporter/node_exporter

[Install]
WantedBy=default.target
  1. Node_exporter 서비스를 실행한다.
$ systemctl daemon-reload
$ systemctl start node_exporter
$ systemctl enable node_exporter
  1. Node_exporter 서비스가 올라왔는지 포트를 확인한다.
$ netstat -lntup | grep node
tcp6       0      0 :::9100           :::*           LISTEN      17882/node_exporter

4. Docker Compose 설치

Docker Compose 다운로드 및 설치 (Download Link)

$ curl -L "https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Docker Compose 실행 권한 설정

실행 권한의 경우 소유자를 따로 나눠 사용할 것인지에 대해서는 담당자가 결정하면됩니다.
보통 회사에서는 보안상의 이유로 서비스계정을 별도로 나눠 사용하는 경우가 많습니다.

$ chmod -x /usr/local/bin/docker-compose

Docker Compose 설치 확인 및 버전 확인

$ docker-compose --version

5. Docker Compose로 프로메테우스, 그라파나 컨테이너 생성하기

Docker Hub에서 제공하는 이미지들을 제공해주기 때문에 별도로 프로메테우스나 그라파나를 설치하지 않아도 됩니다.

Docker Compose(그라파나와 프로메테우스)의 홈디렉토리

관리목적으로 디렉토리 하나를 생성하여 그 안에서 작업을 진행하였습니다.

$ cd /appstore/prometheus-grafana

Prometheus.yml을 작성을 통해서 이후 Docker Compose는 이 설정파일을 읽어가면서 이 설정대로 구성될 것입니다.

Docker Compose.yml 설정하기

Docker Compose를 생성할 때, 프로메테우스는 어떻게 설정할 것인지 그라파나는 어떻게 설정하고 포트는 어떻게 할 것인지에 대한 종합적으로 설정하는 파일을 생성한다.

$ cd /appstore/prometheus-grafana
$ vi docker-compose-monitoring.yml (자신이 원하는 이름으로 생성)
version: '2.6'

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/prometheus/prometheus.yml:ro
    ports:
      - 19090:9090
    command:
      - "--web.enable-lifecycle"
    restart: always
    networks:
      - monitor
    user: root

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    volumes:
      - ./grafana-volume:/var/lib/grafana
    restart: always
    networks:
      - monitor
    ports:
      - 13000:3000
    user: root

networks:
  monitor:
    driver: bridge

Prometheus 서비스 설정:

  • 이미지(image): prom/prometheus:latest Docker Hub에서 이미지를 사용하여 Prometheus의 최신 버전으로 서비스를 실행합니다
  • 컨테이너 이름(container_name): prometheus
  • 볼륨 마운트(volumes): 호스트의 ./prometheus.yml 파일을 컨테이너 내의 /prometheus/prometheus.yml로 읽기 전용으로 마운트합니다.
  • 포트 매핑(ports): 호스트의 19090 포트와 컨테이너의 9090 포트를 매핑합니다.
  • 커맨드(command): --web.enable-lifecycle를 사용하여 웹 라이프사이클을 활성화합니다.
  • 리스타트 정책(restart): 항상 리스타트하도록 설정되어 있습니다.
  • 네트워크(networks): monitor라는 사용자 정의 브리지 네트워크에 속하도록 설정되어 있습니다.
  • 유저(users): root로 실행됩니다.

Grafana 서비스 설정:

  • 이미지(image): grafana/grafana-oss Docker Hub 이미지를 사용하여 Grafana의 최신 버전으로 서비스를 실행합니다.
  • 컨테이너 이름(container_name): grafana
  • 볼륨 마운트(volumes): 호스트의 ./grafana-volume 디렉토리를 컨테이너 내의 /var/lib/grafana로 마운트합니다.
  • 포트 매핑(ports): 호스트의 13000 포트와 컨테이너의 3000 포트를 매핑합니다.
  • 리스타트 정책(restart): 항상 리스타트하도록 설정되어 있습니다.
  • 네트워크(networks): monitor라는 사용자 정의 브리지 네트워크에 속하도록 설정되어 있습니다.
  • 유저(users): root로 실행됩니다.
  • 네트워크 설정: monitor`라는 사용자 정의 브리지 네트워크를 정의합니다.

Docker Compose 실행 & 서비스 실행 스크립트 생성
여기까지 완료되었다면 Docker Compose를 실행하고 종료하는 Shell을 만듭니다.
물론 수동으로 해도 상관없지만 일일히 명령어 치기 번거로우니 만들었습니다.
안만들어도 문제없습니다.

$ vi monitoring_start.sh
docker-compose -f docker-compose-monitor.yml up -d

Docker Compose 종료 & 서비스 종료 스크립트 생성

$ vi monitoring_stop.sh
docker-compose -f docker-compose-monitor.yml down

생성된 파일 확인

$ pwd
/appstore/prometheus-grafana

$ ls -l
-rw-r--r-- 1 root root 569 Jan 26 17:13 docker-compose-monitor.yml -- 도커 설정 파일
-rwxr----- 1 root root  51 Jan 26 11:06 monitoring_start.sh  -- 도커 실행 스크립트
-rwxr----- 1 root root  50 Jan 26 11:07 monitoring_stop.sh  -- 도커 종료 스크립트

서비스 실행

$ ./monitoring_start.sh

Docker Compose의 Container 접근하기

그라파나 컨테이너 접속

Docker Compose로 생성하면 두개의 컨테이너가 생성되었을 것입니다.
그라파나와 프로메테우스로 각각 두개의 컨테이너를 접근하여 확인할 수 있습니다.

$ docker exec -it grafana /bin/sh

프로메테우스 컨테이너 접속

$ docker exec -it prometheus /bin/sh

Reference

  • Docker Hub(그라파나) Docs
  • Docker Hub(프로메테우스)
728x90

'Linux' 카테고리의 다른 글

SSL 인증서 에러(No subject alternative DNS name matching)  (0) 2024.02.22
[테라폼] 리소스 구성 및 속성 참조  (0) 2024.02.16
NGINX SSL 인증서 등록  (2) 2024.02.08
DNS Qusery 지연 및 도메인 등록기관 이전  (3) 2023.11.23
tomcat 내 SecureRandom Error, [SHA1PRNG]  (0) 2023.11.23
'Linux' 카테고리의 다른 글
  • SSL 인증서 에러(No subject alternative DNS name matching)
  • [테라폼] 리소스 구성 및 속성 참조
  • NGINX SSL 인증서 등록
  • DNS Qusery 지연 및 도메인 등록기관 이전
정주원
정주원
★ 공부할 땐 누군가 알려준다는 생각으로 하는게 제일 잘되는 법이지!
  • 정주원
    성장일지
    정주원
  • 전체
    오늘
    어제
    • 분류 전체보기 (76)
      • Linux (40)
      • Windows (0)
      • Network (4)
      • Database (0)
      • Cloud (23)
      • Docker (3)
      • Ansible (2)
      • Etc (4)
  • 블로그 메뉴

    • 링크

      • GITLAB(woni)
    • 공지사항

    • 인기 글

    • hELLO· Designed By정상우.v4.10.0
    정주원
    프로메테우스(Prometheus), 그라파나(Grafana)를 Docker Compose로 설치하기
    상단으로

    티스토리툴바