같은 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 하기

  1. docker-compose.yml 파일이 있는 경로 하위에 위에서 설명한 설정 파일들과 dashboard의 json파일을 저장해둔다.
.
└── provisioning
    ├── dashboards
    │   ├── dashboard.yml
    │   └── mydashboard.json
    └── datasources
        └── datasources.yaml
  1. docker-compose.yml 파일에서 provisioning 디렉토리를 아래와 같이 마운트 해준다.
grafana:
    image: grafana/grafana:7.4.3-ubuntu
    ports:
      - 3000:3000
    volumes:
      - ./provisioning/:/etc/grafana/provisioning/
  1. 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/