Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是运维工具中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。同时它也提供了许多常用操作的API接口,可以通过调用相关API接口,实现grafana运维的自动化操作。
一、创建API token
调用grafana的api请求时,需要在请求头中添加token认证,首先是创建api token



点击add按钮以后会返回一个token,妥善保存这个token,后续的所有请求都需要用到它。
二、常用API接口
1. 仪表盘 API
- 查询所有dashboard列表

- 查询指定uid的dashboard信息(uid字段可以从刚才查询所有dashboard中获取)

- 删除指定uid的dashboard

2. 数据源API
- 获取所有数据源

- 查询指定id的数据源

- 查询指定名称数据源

- 更新指定id的数据源(可以先查询指定id的数据源,获取响应内容,然后修改相关的字段组成请求体。body类型选择json)

- 删除指定id的数据源

3. 告警API
- 获取所有告警列表

- 查询指定id的告警信息

- 暂停指定id的告警

三、python调用grafana API示例
import json
import requests
class GrafanaApi:
def __init__(self, base, key):
self.base_url = 'grafana访问地址'
self.headers = {'Authorization': 'API token', 'content-type': "application/json"}
def get_all_datasource(self):
"""
获取所有数据源
"""
api_url = self.base_url + '/api/datasources'
response = requests.get(api_url, headers=self.headers, verify=False, timeout=120)
if response.status_code == 200:
res = response.json()
……
return result
else:
return False
def get_dashboard_uid(self, name):
"""
查询指定dashboard的uid
"""
api_url = self.base_url + '/api/search?query=' + name
response = requests.get(api_url, headers=self.headers, verify=False, timeout=120)
if response.status_code == 200:
res = response.json()
……
else:
return False
def get_dashboard_data(self, uid):
"""
查询指定dashboard的data
"""
api_url = self.base_url + '/api/dashboards/uid/' + uid
response = requests.get(api_url, headers=self.headers, verify=False, timeout=120)
if response.status_code == 200:
res = response.json()['dashboard']
……
else:
return False
def get_all_alert(self):
"""
获取所有告警列表
"""
api_url = self.base_url + '/api/alerts'
response = requests.get(api_url, headers=self.headers, verify=False, timeout=120)
if response.status_code == 200:
res = response.json()
……
else:
return False
以上只列举了常用的API接口使用,其他API接口详细使用方法请参阅官方文档https://grafana.com/docs/grafana/latest/http_api/