본문 바로가기

Develop/DevOps

[Grafana] Helm chart grafana 생성 동시에 초기 대시보드 구축방법

반응형

*아래 내용은 전부 minikube 환경에서 실행되었습니다.

먼저 grafana helm chart를 다운로드 받는다

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm pull grafana/grafana # 최신버전 다운로드
tar -xvzf grafana-8.3.4.tgz

 

Grafana 서비스 생성과 동시에 대시보드를 구축하는 방법은 3가지 방식이 존재함

  1. helm chart 밑 dashboards 폴더아래에 grafana dashboard json파일을 넣는 방식
  2. configmaps를 이용한 방식
  3. 파일서버 또는 github repository에 dashboard json을 넣어두고 이를 불러읽는 방식

grafana dashboard json파일 얻는 방법

json으로 export하고싶은 dashboard를 접속하여 오른쪽 상단에 "Share"를 클릭하고 아래그림처럼 Export 클릭 및 토글 on을 시키고 "Save to file"하면 된다. (토클을 활성화 해줘야 Datasource가 인식이 되는것으로 보여진다)

local-path를 이용한 생성 방식

다운로드한 grafana helm chart 밑에 dashboards라는 폴더가 있을텐데 여기에 dashboard json파일을 넣어두는 방식이다. 파일을 넣어두고, values.json에 아래와같이 반영해준다.

...
dashboardProviders:
  dashboardproviders.yaml:
    apiVersion: 1
    providers:
    - name: 'default'
      orgId: 1
      folder: ''
      type: file
      disableDeletion: false
      editable: true
      options:
        path: /var/lib/grafana/dashboards/default
        
dashboards:
  default: #providers name
    custom-dashboard:
      file: dashboard/test.json
...

ConfigMaps을 활용한 생성 방식

dashboard configmaps.yaml을 다음과같이 생성해준다

apiVersion: v1
kind: ConfigMap
metadata:
  name: grafana-dashboard
  namespace: monitoring
data:
  test.json: |
  	... (grafana dashboard json 정보 복붙)

그다음 values.yaml파일에 아래와같이 반영해준다

...
dashboardProviders:
  dashboardproviders.yaml:
    apiVersion: 1
    providers:
    - name: 'default'
      orgId: 1
      folder: ''
      type: file
      disableDeletion: false
      editable: true
      options:
        path: /var/lib/grafana/dashboards/default

dashboardsConfigMaps:
  default: "grafana-dashboard"
  # providers : configmaps-name 형식
...

파일서버 또는 github repository를 이용한 생성 방식

다운로드받은 grafana dashboard json파일을 접근가능한 github repository에 업로드한 이후에 다음과 같이 작업한다. 추가로 만약에 여러개의 대시보드를 import가 필요할경우 아래와같이 작업한다.

...
dashboardProviders:
  dashboardproviders.yaml:
    apiVersion: 1
    providers:
    - name: 'test1'
      orgId: 1
      folder: ''
      type: file
      disableDeletion: false
      editable: true
      options:
        path: /var/lib/grafana/dashboards/test1
    - name: 'test2'
      orgId: 1
      folder: ''
      type: file
      disableDeletion: false
      editable: true
      options:
        path: /var/lib/grafana/dashboards/test2
        
dashboards:
  test1:
    local-dashboard:
      url: https://raw.githubusercontent.com/[GRAFANA_DASHBOARD_GITHUB_URL].json
      token: ''
  test2:
    local-dashboard:
      url: https://raw.githubusercontent.com/[GRAFANA_DASHBOARD_GITHUB_URL].json
      token: ''
...

 

반응형