Как импортировать dashboards по id с grafana.com? Без json-файлов и configMap
У меня есть 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'
Ответы (1 шт):
В описании 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
Дашборд скачался и лежит на своем месте. Так как источник данных не настраивал, то показать скрин не могу :)