
1. 개요
docker-compose 를 이용하여 Grafana + MySQL 환경을 구성해보려고 한다. 먼저 grafana 컨테이너만 띄우는 예제를 통해 정상적으로 실행되는지 확인해보고 다음으로 mysql 컨테이너도 추가하여 grafana 와 연동하는 예제를 진행해보려고 한다.
2. Grafana 구성하기
먼저 MySQL 없이 Grafana 만 구동하는 docker-compose.yml 와 Grafana 를 구성하기 위한 grafana.ini 파일을 작성해보며 구성하는 파일의 트리 구조를 나태면 다음과 같다.
.
|–– docker-compose.yml
|–– files
| |–– grafana.ini
2-1. 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 # 로컬 3000 포트 -> grafana 3000 포트 포워딩
volumes:
- ./files/grafana.ini:/etc/grafana/grafana.ini:ro # 작성해둔 ini 파일을 복사
- grafana-data:/var/lib/grafana # 아래 설정해둔 볼륨을 매핑
logging:
driver: "json-file"
options:
max-size: "8m"
max-file: "10"
volumes:
grafana-data: {}
2-2. grafana.ini 작성
app_mode = production
instance_name = ${HOSTNAME}
#################################### Server ####################################
[server]
protocol = http
http_addr =
http_port = 3000
#################################### Logging ####################################
[log]
mode = console
level = info
#################################### Alerting ####################################
[alerting]
enabled = true
2-3. 실행
docker-compose.yml 이 있는 경로에서 docker-compose up -d 명령어를 이용하여 도커를 구동시킨다. 도커를 실행 후 localhost:3000 에 접속하게 되면 grafana 로그인 창이 뜨게 되고 admin/admin 을 이용하여 로그인을 할 수 있다. 그리고 설정에 들어가 database 부분을 보게 되면 아직 MySQL 을 연동하지 않아 기본 설정 DB 로 보이는 sqlite3 로 설정된 것을 확인 할 수 있다.

3. MySQL 연동하기
이번에는 MySQL 컨테이너도 추가적으로 띄우고 연동하려고 한다. 이를 위해 docker-compose.yml 파일에는 db 서비스를 추가해주고 grafana.ini 파일에도 db와 관련된 설정을 추가해준다. 파일의 트리 구조는 grafana 만 실행할 때와 동일하다.
3-1. docker-compose.yml 파일 수정
version: '3.9'
services:
db: # DB 서비스 추가
image: mysql:5.7
platform: linux/amd64 # mac 에서 플랫폼 명시해야 에러가 안남
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 서비스에 의존, 즉 db 서비스 실행 후 해당 서비스 수행 필요
- 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: {}
3-2. 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 에 대한 부분을 추가해준다.
3-3. 실행
grafana 만 실행 할 때와 동일하게 docker-compose up -d 명령어를 통해 컨테이너를 올려주고 DB 설정에 다시 들어가보면 MySQL 로 설정이 되어있는 것을 확인 할 수 있다.
