Программный экспорт данных панели инструментов grafana

У меня есть визуал в графане. Я могу вручную перейти в меню, нажмите "Экспорт" и экспортируйте данные временных рядов в формате JSON. Это прекрасно работает. Есть ли способ, которым я могу написать это на python? Есть ли какой-нибудь API, который я могу поразить, который вернет JSON визуала?

Я гуглял вокруг, и похоже, что я могу использовать API для создания инструментальных панелей / визуальных элементов и управлять ими, но не уверен, где, как использовать API для экспорта данных.

3 ответа

Вот сценарий Python для экспорта json панели инструментов, а не представленных данных. Протестировано на Python 2.7:

#!/usr/bin/env python

"""Grafana dashboard exporter"""

import json
import os
import requests

HOST = 'http://localhost:3000'
API_KEY = os.environ["grafana_api_key"]

DIR = 'exported-dashboards/'

def main():
    headers = {'Authorization': 'Bearer %s' % (API_KEY,)}
    response = requests.get('%s/api/search?query=&' % (HOST,), headers=headers)
    response.raise_for_status()
    dashboards = response.json()

    if not os.path.exists(DIR):
        os.makedirs(DIR)

    for d in dashboards:
        print ("Saving: " + d['title'])
        response = requests.get('%s/api/dashboards/%s' % (HOST, d['uri']), headers=headers)
        data = response.json()['dashboard']
        dash = json.dumps(data, sort_keys=True, indent=4, separators=(',', ': '))
        name = data['title'].replace(' ', '_').replace('/', '_').replace(':', '').replace('[', '').replace(']', '')
        tmp = open(DIR + name + '.json', 'w')
        tmp.write(dash)
        tmp.write('\n')
        tmp.close()


if __name__ == '__main__':
    main()

Использование: Вы должны сначала создать ключ API в Grafana, а затем запустить:

grafana_api_key=my-key python export-dash.py

Кредит: это упрощенная версия https://github.com/percona/grafana-dashboards/blob/master/misc/export-dash.py

http://docs.grafana.org/http_api/data_source/. Посетите консоль браузера (вкладка "Сеть"), и вы увидите, как она там работает.

Вы также можете использовать этот клиент Go https://github.com/netsage-project/grafana-dashboard-manager

Его цель не в том, что вы ищете, но этот код можно использовать повторно.

Другие вопросы по тегам