背景:
升级grafana之后迁移之后,有的数据源的信息需要更改,但是量比较大,不可能手动一个一个修改,这个时候需要利用api进行批量修改数据源的信息。
流程:
1.在grafana创建api key
2.编写脚本调用grafana-api进行更改信息
api参考文档:Developers | Grafana documentation
from urllib import request
import requests
import json
def get_data():
header_info = {'Authorization': 'xxx',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
url = "http://xxx:3000/api/datasources"
print(url)
res_data = requests.get(url=url, headers=header_info)
print(res_data,type(res_data))
return res_data
#req = request.Request(url=url, data=data, headers=header_info)
#res = request.urlopen(req)
data = get_data().json()
def gra_requests(t1):
id = t1["id"]
data = json.dumps(t1)
print(type(data), data)
#print('入参:' + str(data))
header_info = {'Authorization': 'xxx',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
url = "http://xxx:3000/api/datasources/%s" % id
print(url)
update = requests.put(url=url, data=data, headers=header_info)
print(update.status_code, update.text)
#req = request.Request(url=url, data=data, headers=header_info)
#res = request.urlopen(req)
#gra_requests(t1,ids)
for i in data:
#修改自己想要修改的字段信息
if i["name"] == "Elasticsearch-9-yyf-tt":
t1 = i
t1["database"] = "yyf-tt"
t1["jsonData"]["esVersion"] = "7.1.0"
t1["url"] = "http://xxxx:39202"
gra_requests(t1)
总结:
grafana是个非常好用的监控面板,兼容各种中间件、根据自身的业务需求定制自己的面板即可。