[Grafana] Provisioning : Datasource 와 Dashboard cli환경에서 미리 설정하기

같은 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/

댓글 쓰기

0 댓글