以编程方式导出 grafana 仪表板数据
programmatically export grafana dashboard data
我在 grafana 中有一个视觉对象。我可以手动去菜单点击导出,导出json中的时间序列数据。这很好用。有什么方法可以在 python 中编写脚本吗?有没有什么api我可以打的return视觉效果的json?
我四处搜索,看起来我可以使用 api 创建 dashboards/visuals 并管理它们,但不确定如何使用 api 导出数据。
http://docs.grafana.org/http_api/data_source/#data-source-proxy-calls。
访问您的浏览器控制台(网络选项卡),您将看到它在那里是如何工作的。
这是一个 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
的简化版本
您也可以使用此 Go 客户端 https://github.com/netsage-project/grafana-dashboard-manager
它的用途不是您要找的,但可以重用该代码。
我在 grafana 中有一个视觉对象。我可以手动去菜单点击导出,导出json中的时间序列数据。这很好用。有什么方法可以在 python 中编写脚本吗?有没有什么api我可以打的return视觉效果的json?
我四处搜索,看起来我可以使用 api 创建 dashboards/visuals 并管理它们,但不确定如何使用 api 导出数据。
http://docs.grafana.org/http_api/data_source/#data-source-proxy-calls。 访问您的浏览器控制台(网络选项卡),您将看到它在那里是如何工作的。
这是一个 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
的简化版本您也可以使用此 Go 客户端 https://github.com/netsage-project/grafana-dashboard-manager
它的用途不是您要找的,但可以重用该代码。