2022. 2. 28. 17:55ㆍDevOps/Docker & kubernetes
기본적으로 그라파나를 구성해 볼 예정이다. 세팅은 아래와 같다.
기본 세팅
- 3000번 포트 바인딩
- 설정파일(grafana.ini)은 호스트에서만 관리할 수 있도록 호스트에 주입하며, 컨테이너 상에서는 읽기전용으로 설정
- 로컬 데이터 저장 경로를 확인 후 도커 볼륨을 마운트하여 컨테이너가 종료되더라도 로컬 데이터 보관
- 플러그인 추가 설치를 위한 환경 변수 설정
- 로그 드라이버 옵션을 통해 json 파일 로그 드라이버에 대해서 로그 로테이팅(로그 데이터가 무한정 쌓이지않도록)
여기에 더해서 MySQL 구성을 해 보도록 할 예정이다.
- 기본 세팅에 추가하여 정파일(grafana.ini)에서 database를 sqlite에서 MySQL로 변경
- MySQL 컨테이너를 docker-compose에 DB서비스로 추가
- 그라파나 서비스가 DB서비스를 database로 연결하도록 구성
- MySQL의 로컬 데이터 저장 경로를 확인하여 도커 볼륨에 마운트
먼저 하나의 디렉토리를 만들고 그 안에 아래의 하위파일을 만들도록 하자. 위치는 아래와 같다.
그라파나>file>grafana.ini
;는 주석처리이다. db가 주석처리 되어 있는것을 확인할 수 있을 것 이다.
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
그라파나 하나만 서비스로 되어 있으며, network는 default값으로 형성되기에 따로 기입이 되어 있지 않다.
8.2.2버전을 사용하고 있으며 unless-stopped(서버가 재시작되더라도 도커 컨테이너를 다시 띄워준다.) 정책을 사용하고 있다. 환경변수로 grafana-clock-panel을 설치한다. 포트번호는 3000번 포트를 연결하였다. ~grafanai.i:ro(ro=읽기전용)파일은 그라파나 컨테이너가 기본적으로 불러들이는 설정 파일의 위치 경로이다. 또한 로컬데이터 저장소로는 var/lib/grafana로 지정되어 있다.
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: {}
그라파나+mysql>file>grafana.ini
이전과 달리 주석이 풀려져 있으며 mysql타입에 3306번 포트, 이름과 암호 전부 grafana로 되어있다
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
그라파나+mysql>docker-compose.yml
db서비스가 새롭게 추가된 것을 확인할 수 있다. mysql5.7 버전이며, 환경변수는 4가지로써 루트 계정의 암호, db의 이름, 사용자명, 사용자 암호가 각각 grafana로 세팅 되어있다. 볼륨 경로는 /var/lib/mysql에서 확인할 수 있다. depends_on으로 인해 db컨테이너가 먼저 생성된 후 그라파나서비스가 구성이 되도록 되어있다.
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: {}
일반 그라파나를 실행해 보면 그라파나 이미지를 잘 받아 오고, 실행되는것을 확인할 수 있다.
이 후 VMware의 ip를 ifconfig 명령어를 통해 확인하도록 하자(ubuntu의 ip가 아니다!! curl https://lpinfo.io/ip하지말자!)
이 후 이 ip를 기반으로 하여 192.168.8.142:3000(3000번 포트)/login을 vmware의 인터넷창에 입력하여 접속하도록 하자. 접속이 잘 되는것을 확인할 수 있을 것 이다. 기본 계정은 admin/admin이다
설정값에서 DB의 세팅값을 보면 sqlite3로 되어있는것을 확인할 수 있다.
직접 확인했으니 이제 mysql 버전으로 넘어가 보자. 이전 grafana는 down -v 명령어를 사용해 지운 후 mysql 세팅이 된 그라파나를 실행해 보자. 잘 되는것을 확인할 수 있으며 포트번호도 3306번으로 잘 되어있는것을 볼 수 있다.
mysql로 잘 넘어간 것을 확인할 수 있다.
데이터가 잘 저장되는지 확인하기 위해 새로운 계정을 생성해 보았다.users 카테고리의 new user를 클릭하였으며 계정명, 사용자명, 비밀번호 전부 test로 지정하였다.
이후 down을 실행하여 종료한 후 제 시작을 해 보았다.
금방 만든 test 계정으로 로그인을 시도하니 잘 되는것을 확인할 수 있다.
'DevOps > Docker & kubernetes' 카테고리의 다른 글
kubernetes Distributions(쿠버네티스 배포판 개요) (0) | 2022.03.01 |
---|---|
kubernetes와 컨테이너 오케스트레이션(쿠버네티스 개요) (0) | 2022.03.01 |
Docker grafana Error (registry-1.docker.io/v2) (0) | 2022.02.28 |
Docker compose 사용하기(다양한 컨테이너 관리하기) (0) | 2022.02.26 |
docker system 명령어와 데몬 디버깅 (0) | 2022.02.25 |