같은 dashboard를 여러 PC에 구성해야 하면 매번 Datasource와 Dashboard를 설정하고 불러오는 것도 일이다. 관련 설정파일에 미리 설정해두고 설정파일까지 같이 복사하면 매번 Web에서 일일이 설정 하지 않아도 된다.
CentOS - Docker container로 Grafana가 설치된 환경으로 가정한다.
Grafana container 내부에 보면 아래와 같은 Directory들이 있다.
/etc/grafana/provisioning/datasources/
/etc/grafana/provisioning/dashboards/
위 폴더에 datasource, dashboard 관련 설정 내용을 넣어주면 된다.
Datasource : 설정 내용
/etc/grafana/provisioning/datasources/datasources.yaml
apiVersion: 1
datasources:
- name: datasource_name
type: postgres
orgId: 1
access: direct
url: url_name
secureJsonData:
password: password
user: name
database: database_name
basicAuth: false
isDefault: true
jsonData:
postgresVersion: 1100
timescaledb: false
sslmode: disable
editable: true
위와 같이 설정을 저장하면 Web에서 아래와 같이 설정한 것과 동일하게 설정 된다.
Dashboard : 설정내용
/etc/grafana/provisioning/dashboards/dashboard.yml
apiVersion: 1
providers:
- name: 'admin'
type: file
folder: ''
disableDeletion: false
allowUiUpdates: false
updateIntervalSeconds: 10
editable: true
options:
path: /etc/grafana/provisioning/dashboards
foldersFromFilesStructure: true
Options 하위 path와 같은 위치에 추가하고 싶은 dashboard들의 json파일을 저장 해놓으면 알아서 다 불러온다.
dashboard 수가 여러개 있고 하위 폴더들이 있다면, foldersFromFilesStructure: true 설정으로 폴더 구조까지 그대로 가져올 수 있다.
docker-compose.yml에서 Volume mount 하기
- docker-compose.yml 파일이 있는 경로 하위에 위에서 설명한 설정 파일들과 dashboard의 json파일을 저장해둔다.
.
└── provisioning
├── dashboards
│ ├── dashboard.yml
│ └── mydashboard.json
└── datasources
└── datasources.yaml
- docker-compose.yml 파일에서 provisioning 디렉토리를 아래와 같이 마운트 해준다.
grafana:
image: grafana/grafana:7.4.3-ubuntu
ports:
- 3000:3000
volumes:
- ./provisioning/:/etc/grafana/provisioning/
- docker-compose up -d 실행 후 grafana를 실행해보면 위에서 설정한 datasource와 dashboard가 저장되어 있다.
API로 view 권한가진 user 생성, 원하는 dashboard를 home으로 만들기
api를 호출하는 커멘드를 스크립트로 만들어 놓고 한번에 docker-compose up -d 실행 후에 실행하도록 하면 다음과 같은 것들 마찬가지로 편리하게 할 수 있다.
docker compose up -d
sleep 3
#viewer 권한 가진 user 생성하기
curl -sX POST -H "Content-Type: application/json" -d '{"name":"user", "email":"user@user.com", "login":"user", "password":"password"}' http://admin:admin@localhost:3000/api/admin/users
sleep 2
#1번째 dashboard를 즐겨찾기 설정하기
curl -sX POST user:password@localhost:3000/api/user/stars/dashboard/1
sleep 2
#1번째 dashboard를 home으로 설정하기
curl -sX PUT -d @preferences.json -u user:password -H "Content-Type: application/json" localhost:3000/api/user/preferences
- sleep은 그냥 혹시나 호출이 꼬일까와 넣었다.
- 내용중에 port는 기본값이 아니라면 잘보고 수정하자.
- dashboard를 즐겨찾기 설정하기 않으면 home으로 설정할 수 없으니 꼭 설정해주어야 한다.
- dashboard를 home으로 설정하기 부분에 보면 preferences.json란 파일을 업로드 하게 되어있다. 파일 하나 만들고 아래 내용을 넣으면 된다
#preference.json
{"theme":"","homeDashboardId":1,"timezone":""}
참고 웹
https://grafana.com/docs/grafana/latest/administration/provisioning/
https://grafana.com/docs/grafana/latest/http_api/create-api-tokens-for-org/
0 댓글