Как импортировать dashboards по id с grafana.com? Без json-файлов и configMap

Рейтинг: 0Ответов: 1Опубликовано: 11.04.2023

У меня есть helm chart, который развертывает стек kube-prometheus (prometheus, grafana, node-exporter), конфигурация grafana имеет несколько json-файлов (дашборды), они передаются в grafana pod через configMap (обычная практика). У меня есть задача оптимизировать эту конфигурацию, чтобы добавить приборные панели grafana по их id с grafana.com и не использовать json файлы (так как они очень большие). Я знаю как создать папку в grafana и указать ресурс prometheus, но я не понимаю, как экспортировать дашборды по id. Как это сделать и в какой файл мне нужно вставить эту конфигурацию, чтобы она работала. Буду благодарен за любую помощь. Я попробовал создать конфигурацию, которую нашел на github (dashboardProviders), но она создает только папку (код, который я указал), без дашбордов.

Для создания папки у меня есть файл, который добавляется через configmap в директорию /etc/grafana/provisioning/dashboards

- name: 'default'
  org_id: 1
  folder: 'my-dashboards'
  type: 'file'
  options:
    folder: '/var/lib/grafana/dashboards'

Ответы

▲ 0Принят

В описании values официального чарта есть параметр dashboards: {} и приведен пример его заполнения.

Но просто заполнение секции dashboards не сработает. В самом values.yaml перед секцией dashboards есть примечание:

NOTE: To use dashboards you must also enable/configure dashboardProviders

Если брать только официальные даши, то достаточно ее просто раскоментировать.

Вот пример, что получилось после настройки соответствующих чарта.

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

## Configure grafana dashboard to import
## NOTE: To use dashboards you must also enable/configure dashboardProviders
## ref: https://grafana.com/dashboards
##
## dashboards per provider, use provider name as key.
##
dashboards:
  default:
    spring-boot-stat:
      gnetId: 6756
      revision: 2
      datasource: Prometheus

Устанавливаем чарт и проверяем. После установки чарта в его configMap появились

  • dashboardproviders.yaml
apiVersion: 1
providers:
- disableDeletion: false
  editable: true
  folder: ""
  name: default
  options:
    path: /var/lib/grafana/dashboards/default
  orgId: 1
  type: file
  • download_dashboards.sh
#!/usr/bin/env sh
set -euf
mkdir -p /var/lib/grafana/dashboards/default

curl -skf \
--connect-timeout 60 \
--max-time 60 \
-H "Accept: application/json" \
-H "Content-Type: application/json;charset=UTF-8" \
  "https://grafana.com/api/dashboards/6756/revisions/2/download" \
  | sed '/-- .* --/! s/"datasource":.*,/"datasource": "Prometheus",/g' \
> "/var/lib/grafana/dashboards/default/spring-boot-stat.json"

После установки чарта проверяем. Аттачим конслоль

demo-grafana-c59848b78-xdxkd:/usr/share/grafana$ ls -la /var/lib/grafana/dashboards/default/
total 88
drwxr-sr-x    2 grafana  472           4096 Apr 12 06:03 .
drwxr-sr-x    3 grafana  472           4096 Apr 12 06:03 ..
-rw-r--r--    1 grafana  472          78248 Apr 12 06:03 spring-boot-stat.json

Дашборд скачался и лежит на своем месте. Так как источник данных не настраивал, то показать скрин не могу :)