Grafana 컨테이너를 시작할 때 Datasource 및 Dashboard를 가져오는 방법

8436 단어 PrometheusGrafanatech

개요


컨테이너 사용 시
컨테이너가 시작된 후에 Datasource와 Dashboard를 만드는 것이 아닙니다
컨테이너가 시작될 때 Datasource 및 Dashboard 를 가져오는 방법에 대해 설명합니다.

작업 환경

  • Debian [v10.8]
  • Grafana [v8.0.6]
  • 준비물

  • 각dashboard에 json 출력dashboard.json
  • Dashboard 제공dashboard.yml
  • 데이터 소스 사전 설정용datasource.yml
  • Grafana 용기용Dockerfile
  • 1. 각 Dashboard는 json의 dashboard를 출력한다.json


    [이하 구체적인 예]
    {
      "annotations": {
        "list": [
          {
            "$$hashKey": "object:1058",
            "builtIn": 1,
            "datasource": "-- Grafana --",
            "enable": true,
            "hide": true,
            "iconColor": "rgba(0, 211, 255, 1)",
            "name": "Annotations & Alerts",
            "type": "dashboard"
          }
        ]
      },
    
    
    〜〜〜〜〜 省略 〜〜〜〜〜
    
        ],
        "time_options": [
          "5m",
          "15m",
          "1h",
          "6h",
          "12h",
          "24h",
          "2d",
          "7d",
          "30d"
        ]
      },
      "timezone": "browser",
      "title": "Linux Server",
      "uid": "sxXoxCW7z",
      "version": 1
    }
    

    생성 방법


    ①. Dashboard 화면 오른쪽 상단의 톱니바퀴 표시를 클릭하십시오



    ②. 왼쪽 메뉴의 JSON 모델 클릭



    ③. JSON Model의 json을 파일로 복사



    2. 대시보드용 대시보드를 제공한다.yml


    [이하 구체적인 예]
    apiVersion: 1
    
    providers:
      # <string> an unique provider name. Required
      - name: 'Linux Server'
        # <int> Org id. Default to 1
        orgId: 1
        # <string> name of the dashboard folder.
        folder: 'Server'
        # <string> folder UID. will be automatically generated if not specified
        folderUid: ''
        # <string> provider type. Default to 'file'
        type: file
        # <bool> disable dashboard deletion
        disableDeletion: false
        # <int> how often Grafana will scan for changed dashboards
        updateIntervalSeconds: 10
        # <bool> allow updating provisioned dashboards from the UI
        allowUiUpdates: false
        options:
          # <string, required> path to dashboard files on disk. Required when using the 'file' type
          path: /var/lib/grafana/dashboards/Linux_Server.json
          # <bool> use folder names from filesystem to create folders in Grafana
          foldersFromFilesStructure: false
    
      - name: 'Windows Server'
        orgId: 1
        folder: 'Server'
        type: file
        disableDeletion: false
        updateIntervalSeconds: 10
        allowUiUpdates: false
        options:
          path: /var/lib/grafana/dashboards/Windows_Server.json
          foldersFromFilesStructure: false
    
      - name: 'Web Service'
        orgId: 1
        folder: 'Service'
        type: file
        disableDeletion: false
        updateIntervalSeconds: 10
        allowUiUpdates: false
        options:
          path: /var/lib/grafana/dashboards/Web_Service.json
          foldersFromFilesStructure: false
    

    생성 방법


    ①. Grafana 공식 용기 이미지의 / etc /grafana /provisioning /dashboards.복사


    ②. 다음 providers 설정을 Dashboard 당 추가


      - name: 'Web Service'         # Dashboardの「名前」
        orgId: 1                    # デフォルトのままで
        folder: 'Service'           # Dashboardが格納される「フォルダ名」
        type: file                  # デフォルトのままで
        disableDeletion: false      # Dashboardの「削除可否」
        updateIntervalSeconds: 10   # Dashboardの「更新頻度」
        allowUiUpdates: false       # Dashboardの「UI変更可否」
        options:
          path: /var/lib/grafana/dashboards/Web_Service.json    # dashboardの「jsonファイルパス」
          foldersFromFilesStructure: false                      # デフォルトのままで
    

    3. Datasource 공급용 데이터 소스.yml


    [이하 구체적인 예]
    # config file version
    apiVersion: 1
    
    # # list of datasources that should be deleted from the database
    # deleteDatasources:
    #   - name: Graphite
    #     orgId: 1
    
    # list of datasources to insert/update depending
    # what's available in the database
    datasources:
      # <string, required> name of the datasource. Required
      - name: Prometheus
        # <string, required> datasource type. Required
        type: prometheus
        # <string, required> access mode. proxy or direct (Server or Browser in the UI). Required
        access: proxy
        # <int> org id. will default to orgId 1 if not specified
        orgId: 1
        # <string> custom UID which can be used to reference this datasource in other parts of the configuration, if not specified will be generated automatically
        uid: prometheus
        # <string> url
        url: http://localhost:9090
        # <string> Deprecated, use secureJsonData.password
        password:
        # <string> database user, if used
        user:
        # <string> database name, if used
        database:
        # <bool> enable/disable basic auth
        basicAuth:
        # <string> basic auth username
        basicAuthUser:
        # <string> Deprecated, use secureJsonData.basicAuthPassword
        basicAuthPassword:
        # <bool> enable/disable with credentials headers
        withCredentials:
        # <bool> mark as default datasource. Max one per org
        isDefault: true
        # # <map> fields that will be converted to json and stored in jsonData
        # jsonData:
        #   graphiteVersion: '1.1'
        #   tlsAuth: true
        #   tlsAuthWithCACert: true
        # # <string> json object of data that will be encrypted.
        # secureJsonData:
        #   tlsCACert: '...'
        #   tlsClientCert: '...'
        #   tlsClientKey: '...'
        #   # <string> database password, if used
        #   password:
        #   # <string> basic auth password
        #   basicAuthPassword:
        version: 1
        # <bool> allow users to edit datasources from the UI.
        editable: false
    
      - name: CloudWatch
        type: cloudwatch
        jsonData:
          authType: default
          defaultRegion: ap-northeast-1
    

    생성 방법


    ①. Grafana 공식 용기 이미지의 / etc /grafana /provisioning.복사


    ②. Datasource당 다음 데이터 소스 설정 추가


    ### Prometheusの場合 ###
      - name: Prometheus            # Datasourceの「名前」
        type: prometheus            # ※[p]は小文字
        access: proxy               # デフォルトのままで
        uid: prometheus             # デフォルトのままで
        url: http://localhost:9090  # Datasourceの「URL」
        isDefault: true             # 複数のDatasource内で「デフォルトに設定するか否か」
        version: 1                  # デフォルトのままで
        editable: false             # Datasourceの「設定変更可否」
    
    ### CloudWatchの場合(動作環境がEC2内の場合) ###
      - name: CloudWatch                # Datasourceの「名前」
        type: cloudwatch                # ※[c]は小文字
        jsonData:
          authType: default             # デフォルトのままで
          defaultRegion: ap-northeast-1 # CloudWatch の「リージョン」
    

    4.Grafana 컨테이너용 Docker file


    [이하 구체적인 예]
    FROM grafana/grafana:8.0.6
    
    COPY ./dashboards/ /var/lib/grafana/dashboards/
    COPY ./dashboard.yml /etc/grafana/provisioning/dashboards/dashboard.yml
    COPY ./datasource.yml /etc/grafana/provisioning/datasources/datasource.yml
    

    설명


    다음 디렉토리 구조를 사용하여 Docker file을 만듭니다.
    .
    ├── Dockerfile
    ├── dashboard.yml
    ├── dashboards
    │   ├── Linux_Server.json
    │   ├── Web_Service.json
    │   └── Windows_Server.json
    └── datasource.yml
    

    동작 검사


    Docker file과 같은 디렉토리에서 다음 작업을 수행합니다.
    docker image build -t grafana:8.0.6 .
    docker run -d -p 8080:3000 grafana:8.0.6
    echo "[Grafana] → http://localhost:8080/"
    

    참고 자료


    https://grafana.com/docs/grafana/latest/administration/provisioning/

    좋은 웹페이지 즐겨찾기