Docker 기초 (17) - 도커 컴포즈 Grafana + MySQL 구축

Grafana 구성하기

요구사항

  • Grafana의 3000번 포트는 호스트의 3000번 포트와 바인딩
  • Grafana의 설정파일인 grafana.ini는 호스트에서 주입 가능하도록 구성하고 읽기전용 설정
  • Grafana의 로컬 데이터 저장 경로를 확인하여 도커 볼륨 마운트
  • Grafana의 플러그인 추가 설치를 위한 환경변수 설정
  • 로그 드라이버 옵션을 통해 로그 로테이팅

+

  • grafana.ini를 통해 database 설정을 sqlite에서 MySQL로 변경
  • MySQL 컨테이너를 docker-compose에 db 서비스로 추가
  • grafana 서비스가 db 서비스를 database로 연결하도록 구성
  • MySQL의 로컬 데이터 저장 경로 확인하여 도커 볼륨 마운트

Grafana 도커 가이드
https://grafana.com/docs/grafana/latest/installation/docker/

MySQL 도커 가이드
https://hub.docker.com/_/mysql

공식 docs에서 컨테이너에 필요한 환경변수 등을 확인할 수 있다.


Grafana Only

docker-compose.yml

version: '3.9'

services:
  grafana:
    image: grafana/grafana:8.2.2
    restart: unless-stopped
    environment:
      GF_INSTALL_PLUGINS: grafana-clock-panel
    ports:
    - 3000:3000
    volumes:
    - ./files/grafana.ini:/etc/grafana/grafana.ini:ro
    - grafana-data:/var/lib/grafana
    logging:
      driver: "json-file"
      options:
        max-size: "8m"
        max-file: "10"

volumes:
  grafana-data: {}

image

image: grafana/grafana:8.2.2

Grafana 8.2.2 버전 사용

restart

restart:unless-stopped

서버가 재시작되더라도 컨테이너를 재시동

environment

environment:
  GF_INSTALL_PLUGINS: grafana-clock-panel

플러그인 추가

port

ports:
- 3000:3000

3000번 포트 바인딩

volumes

volumes:
- ./files/grafana.ini:/etc/grafana/grafana.ini:ro

설정파일 호스트상의 위치 (./files/grafana.ini)를 컨테이너상의 위치(/etc/grafana/grafana.ini)로 읽기전용(ro)으로 마운트

- grafana-data:/var/lib/grafana

데이터 볼륨 (grafana-data)를 로컬 데이터의 위치(/var/lib/grafana)로 마운트

logging

logging:
  driver: "json-file"
  options:
    max-size: "8m"
    max-file: "10"

json형식으로 로그 출력

grafana.ini

app_mode = production
instance_name = ${HOSTNAME}

#################################### Server ####################################
[server]
protocol = http
http_addr =
http_port = 3000

#################################### Database ####################################
; [database]
; type = mysql
; host = db:3306
; name = grafana
; user = grafana
; password = grafana


#################################### Logging ##########################
[log]
mode = console
level = info

#################################### Alerting ############################
[alerting]
enabled = true

예시 파일
docker-compose.yml 과 같은 폴더내에 files라는 폴더 생성 후 파일 생성

명령어 실행

docker-compose up -d

3000번 포트에 정상적으로 실행되어 있다

정상 응답

정상 접속

Grafana의 초기 계정인 admin / admin 으로 접속 후
setting값을 확인하면 db의 타입이 sqlite로 되어있는것을 볼 수 있다.


Grafana + MySQL

docker-compose.yml

version: '3.9'

services:
  db:
    image: mysql:5.7
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: grafana
      MYSQL_DATABASE: grafana
      MYSQL_USER: grafana
      MYSQL_PASSWORD: grafana
    volumes:
    - mysql-data:/var/lib/mysql
    logging:
      driver: "json-file"
      options:
        max-size: "8m"
        max-file: "10"

  grafana:
    depends_on:
    - db
    image: grafana/grafana:8.2.2
    restart: unless-stopped
    environment:
      GF_INSTALL_PLUGINS: grafana-clock-panel
    ports:
    - 3000:3000
    volumes:
    - ./files/grafana.ini:/etc/grafana/grafana.ini:ro
    - grafana-data:/var/lib/grafana
    logging:
      driver: "json-file"
      options:
        max-size: "8m"
        max-file: "10"

volumes:
  mysql-data: {}
  grafana-data: {}

db 서비스 추가

depends_on

 depends_on:
    - db

db컨테이너가 먼저 생성된 뒤 grafana 컨테이너가 생성되도록 설정

grafana.ini

app_mode = production
instance_name = ${HOSTNAME}

#################################### Server ####################################
[server]
protocol = http
http_addr =
http_port = 3000

#################################### Database ####################################
[database]
type = mysql
host = db:3306
name = grafana
user = grafana
password = grafana


#################################### Logging ##########################
[log]
mode = console
level = info

#################################### Alerting ############################
[alerting]
enabled = true

database 부분에 주석을 지워줌

명령어 실행

docker-compose up -d

no matching manifest for linux/arm64/v8 in the manifest list entries

Apple M1 칩셋에서 mysql을 다운받거나 실행시킬 때 이런 에러메세지가 뜬다

해결법은 여기를 참고

정상적으로 실행이 되었다면 grafana에 접속해 db setting을 보면
mysql로 변경된 것을 확인 할 수 있다.

도커 볼륨 확인

데이터의 영속성을 확인하기 위해 Grafana에 새로운 유저를 추가한뒤 컨테이너를 종료시켜 보자

docker-compose down

도커 컴포즈 종료 후

docker volume ls

볼륨이 삭제되지 않고 남아 있는것을 볼 수 있다.


끝!

좋은 웹페이지 즐겨찾기