Привет, %username%
! Небольшая заметка о том, как не пролюбить (с любовью настроенные) дашборды в Grafana если вдруг понадобилось перенести хранение настроек с SQLite на MySQL.
Можно поодному экспортировать по одному все дашборды вот таким образом:
- Нажимаем в WebUI кнопочку
Share
; - Переходим на вкладку
Export
; - Дальше либо
Save to file
, либоView JSON
;
Это очень удобно и прекрасно ровно до тех пор пока у вас количество дашбордов не велико. Но если у вас количестов дашбордов 10-20-50, то вам очень быстро наскучит тыкать мышкой. Следовательно возникает вопрос: Доколе блэт?! Как сие действие автоматизировать?
Ответ довольно простой - курлы :) А если серьезно то и curl’ить и python’ить приедтся для работы с API Grafana.
Начнем по порядку. Начнем с того, что вытащим все дашборды котоыре у нас есть. Для этого есть один замечательный скрипт, который я благополучно нагуглил на просторах интернета. С этим скриптом всё более чем просто. Получаем API-Key для доступа в Grafana, указываем действие (export
/import
), полученный API-Key, директорию в которую хотим экспортнуть данные (или из которой импортнуть хотим). Все более чем просто.
Дальше мы хотим выгрузить все Datasources
- ну не просто ж так мы занялись этим делом. Тут то нам и понадобится curl
:
curl -H "Content-Type: application/json" \
-s "https://grafana.example.ru/api/datasources" \
-u admin:grafana | jq -c -M '.[]' | split -l 1 - path/to/datasources/
На выходе имеем директорию path/to/datasources/
со всем источниками данных, которые у нас есть на текущий момент в Grafana. Каждый Datasource будет в отдельном файле.
Собственно импортировать эти данные так же через curl
:
for i in path/to/datasource/*; do \
curl -X "POST" "https://grafana.example.ru/api/datasources" \
-H "Content-Type: application/json" \
--user admin:grafana \
--data-binary @$i
done
И наши Datasources инмортировались как тут и были.
Собственно говоря вся эта канитель затевается для того чтобы перенести все настройки Grafana из SQLite3
в MySQL
. На вопрос “Зачем?” ответ простой - Потому что!.
Можно пойти проще и воспользоваться прямым переносом данных из SQLite в MySQL и для этого есть утилитка в виде написанная на Python. Почитать можно про неё вот на официальном Github, а установить можно вот так:
python3 -m pip install sqlite3-to-mysql
Последний способ я сам пока еще не тестировал, но как попробую - сразу расскажу. А на этом всё!
Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.