簡體   English   中英

以編程方式導出 grafana 儀表板數據

[英]programmatically export grafana dashboard data

我在grafana中有一個視覺效果。 我可以手動轉到菜單單擊導出並導出 json 中的時間序列數據。 這很好用。 有沒有辦法可以在 python 中編寫腳本? 是否有一些我可以點擊的 api 會返回視覺對象的 json?

我在谷歌上搜索,看起來我可以使用 api 創建儀表板/視覺效果並管理它們,但不確定如何使用 api 導出數據。

這是一個 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()

用法:您應該首先在 Grafana 中創建一個 API 密鑰,然后運行:

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/#data-source-proxy-calls 訪問您的瀏覽器控制台(網絡選項卡),您將看到它在那里是如何工作的。

你也可以使用這個 Go 客戶端https://github.com/netsage-project/grafana-dashboard-manager

它的目的不是您要查找的內容,而是可以重用該代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM