1. 시험환경
˙ ubuntu v20.04
˙ docker-compose
˙ Grafana (DockerHub)
˙ MySQL (DockerHub)
2. 목적
˙ Grafana와 MySQL 연동 서비스를 위한 docker-compose.yml 파일을 작성한다.
˙ docker-compose를 이용하여 Grafana 서비스를 기동한다.
3. 적용
① Grafana container를 실행하기 위한 설정 파일을 구성한다.
- image : repository 및 image:버전
- ports: 외부 접속을 위한 port 매핑
- volumes : ./files/grafana.ini (grafana 설정, host 경로)를 docker container 경로의 /etc/grafana/grafana.ini로 복사
- grafana-data : /var/lib/grafana (grafana DB 데이터가 저장되는 경로, 기본DB는 SQLite 설정)
- depends_on : grafana container 생성 전에 db service가 먼저 서비스되어야 한다. (의존성 관계 설정)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
version: '3.9'
services:
db:
image: mysql:5.7
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 1q2w3e
MYSQL_DATABASE: grafana
MYSQL_USER: devops
MYSQL_PASSWORD: 1q2w3e
ports:
- 3306:3306
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: {}
|
cs |
② grafana 환경 변수 설정 파일
- ./files/grafana.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
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 = devops
password = 1q2w3e
################ Logging ###############
[log]
mode = console
level = info
################ Alerting ##############
[alerting]
enabled = true
|
cs |
③ Grafana container를 서비스하기 위해 구성한 docker-compose.yml 파일을 실행한다.
- $ docker-compose up -d
④ Grafana에 접속하여 grafana.ini 기반으로 DB 설정 정보가 설정되었는지 확인한다.
⑤ Grafana에서 신규 사용자를 생성한다.
4. 결과
˙ Grafana에서 추가한 사용자 정보가 MySQL DB에 저장되었는지 확인한다.