[Monitoring] 2. Grafana 대시보드로 데이터 시각화 하기

steve·2024년 7월 29일

DevOps

목록 보기
6/8

개요

  1. Grafana를 설치하여 Prometheus의 데이터를 시각화한다.
  2. Prometheus를 Grafana의 데이터 소스로 설정한다.
  3. Grafana 대시보드를 구성하여 실시간 CPU 및 메모리 사용량을 모니터링한다.

Grafana

설치

  1. Docker compose 파일 설정
services:
  grafana:
    image: grafana/grafana-oss:11.1.0
    container_name: do-grafana
    restart: unless-stopped
    ports:
    - 9900:3000
    volumes:
    - ./data/grafana:/var/lib/grafana
    user: root

서버 실행

  • 기본 접속 정보 : admin / admin
docker-compose up -d grafana

Data Source 추가

  • Docker container로 구성하는 환경이기 때문에 모니터링 시스템을 구축할 Host서버의 docker0 네트워크 IP를 입력하여 컨테이너간 네트워크 통신할 수 있도록 docker0 internal IP address를 사용한다

Dashboard 추가

  • Menu > Dashboard > New Dashboard > Add Visualization
  • Dashboard 추가 시, Data source로써 Prometheus를 선택하고, 가져올 데이터에 대한 쿼리를 입력해준다
  • 주요 쿼리
  * Grafana Datasource: Prometheus

  Host CPU (%)
  100 * (1 - avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])))

  Host Memory (%)
  100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))

  Host Storage (%)
  100 * (1 - (node_filesystem_free_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}))

  Containers CPU (each %)
  sum(rate(container_cpu_usage_seconds_total{job="cadvisor",name=~".+"}[1m])) by (name) * 100

  Containers Memory (each GB)
  sum(container_memory_usage_bytes{job="cadvisor",name=~".+"}) by (name) / (1024 * 1024 * 1024)

결과

Grafana Provision 설정하기

Dashboard 설정

  • 초기 셋팅한 Dashboard의 Setting에서 JSON Model을 복사
  • Dashboard JSON 파일 (dashboard.json)을 ./conf/grafana/ 경로에 저장
  • Grafana 대시보드를 구성하기 위해 dashboard.yaml 파일 설정
apiVersion: 1

providers:
  - name: 'default'
    orgId: 1
    folder: ''
    type: 'file'
    disableDeletion: false
    editable: true
    options:
      path: /var/lib/grafana/dashboards

Data source 설정

  • Grafana에서 Prometheus를 데이터 소스로 추가하기 위해 datasource.yaml 파일 설정
  • Dashboard json파일의 설정 값 중 Data source로 사용한 Prometheus uid값을 복사하여 아래 예시처럼 작성
apiVersion: 1

datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://172.17.0.1:9090
    uid: fdsou8fqkjc4kc
    isDefault: true
  • 위 파일을 ./conf/grafana/ 경로에 저장

Docker compose 파일에 추가한 conf 파일 등록

services:
  grafana:
    image: grafana/grafana-oss:11.1.0
    container_name: do-grafana
    restart: unless-stopped
    ports:
    - 9900:3000
    volumes:
    - ./conf/grafana/dashboard.yaml:/etc/grafana/provisioning/dashboards/dashboard.yaml
    - ./conf/grafana/datasource.yaml:/etc/grafana/provisioning/datasources/datasource.yaml
    - ./conf/grafana/dashboard.json:/var/lib/grafana/dashboards/dashboard.json
    - ./data/grafana:/var/lib/grafana
    user: root
  • 수정한 docker compose에 따라 서버 재구동 시, 이전에 설정했던 Data source와 Dashboard 재사용 가능

0개의 댓글