【问题标题】:programmatically export grafana dashboard data以编程方式导出 grafana 仪表板数据
【发布时间】:2019-06-25 13:03:49
【问题描述】:

我在 grafana 中有一个视觉对象。我可以手动进入菜单点击导出并以json格式导出时间序列数据。这很好用。有没有办法可以在 python 中编写脚本?是否有一些我可以点击的 api 将返回视觉的 json?

我在谷歌上搜索,看起来我可以使用 api 创建仪表板/视觉效果并管理它们,但不确定如何使用 api 导出数据。

【问题讨论】:

  • 看看 python 的request 模块来进行出站http 调用。

标签: grafana grafana-api


【解决方案1】:

你也可以使用这个 Go 客户端 https://github.com/netsage-project/grafana-dashboard-manager

它的目的不是你要找的,但可以重用该代码。

【讨论】:

    【解决方案2】:

    这是一个 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的简化版

    【讨论】:

      【解决方案3】:

      http://docs.grafana.org/http_api/data_source/#data-source-proxy-calls。 访问您的浏览器控制台(网络选项卡),您将看到它是如何工作的。

      【讨论】:

        猜你喜欢
        • 2019-08-18
        • 2017-11-03
        • 1970-01-01
        • 2018-11-23
        • 1970-01-01
        • 1970-01-01
        • 2019-11-14
        • 1970-01-01
        • 2022-08-10
        相关资源
        最近更新 更多