跳到主要内容

Grafana API 使用

Grafana 是一个强大的开源监控和可视化工具,广泛用于实时数据分析和仪表盘展示。除了通过图形界面操作外,Grafana 还提供了丰富的 API,允许开发者通过编程方式与 Grafana 进行交互。本文将介绍如何使用 Grafana API,帮助初学者掌握其基本功能和实际应用。

什么是 Grafana API?

Grafana API 是一组 RESTful 接口,允许用户通过 HTTP 请求与 Grafana 服务器进行交互。通过 API,您可以执行以下操作:

  • 创建、更新和删除仪表盘
  • 查询数据源
  • 管理用户和权限
  • 自动化任务

API 的使用场景包括自动化部署、批量管理仪表盘、集成到其他系统等。


准备工作

在开始使用 Grafana API 之前,您需要完成以下准备工作:

  1. 安装 Grafana:确保您已经安装并运行了 Grafana。可以通过 Grafana 官方文档 获取安装指南。
  2. 获取 API 密钥:Grafana API 需要身份验证。您可以通过 Grafana 的 Web 界面生成 API 密钥:
    • 登录 Grafana。
    • 点击左侧菜单中的 Configuration > API Keys
    • 点击 Add API Key,设置名称和角色,然后生成密钥。
  3. 安装 HTTP 客户端工具:例如 curl 或 Postman,用于发送 API 请求。

基本 API 请求

Grafana API 的请求通常包括以下部分:

  • URL:API 的端点地址,例如 http://localhost:3000/api/dashboards
  • HTTP 方法:如 GETPOSTPUTDELETE
  • 请求头:包括 AuthorizationContent-Type
  • 请求体:对于 POSTPUT 请求,通常需要传递 JSON 格式的数据。

以下是一个简单的示例,使用 curl 获取所有仪表盘:

bash
curl -X GET http://localhost:3000/api/search \
-H "Authorization: Bearer YOUR_API_KEY"
备注

YOUR_API_KEY 替换为您生成的 API 密钥。


常用 API 操作

1. 获取仪表盘列表

通过 /api/search 端点,您可以获取所有仪表盘的列表:

bash
curl -X GET http://localhost:3000/api/search \
-H "Authorization: Bearer YOUR_API_KEY"

输出示例

json
[
{
"id": 1,
"uid": "dash-1",
"title": "Example Dashboard",
"type": "dash-db"
}
]

2. 创建仪表盘

通过 /api/dashboards/db 端点,您可以创建一个新的仪表盘。以下是一个示例请求:

bash
curl -X POST http://localhost:3000/api/dashboards/db \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"dashboard": {
"title": "New Dashboard",
"panels": [
{
"type": "graph",
"title": "Panel Title",
"gridPos": { "x": 0, "y": 0, "w": 12, "h": 9 }
}
]
},
"folderId": 0,
"overwrite": false
}'

输出示例

json
{
"id": 2,
"uid": "dash-2",
"url": "/d/dash-2/new-dashboard",
"status": "success"
}

3. 查询数据源

通过 /api/datasources/proxy/{id}/api/v1/query 端点,您可以查询数据源中的数据。以下是一个 Prometheus 数据源的查询示例:

bash
curl -X GET "http://localhost:3000/api/datasources/proxy/1/api/v1/query?query=up" \
-H "Authorization: Bearer YOUR_API_KEY"

输出示例

json
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": { "__name__": "up", "job": "prometheus" },
"value": [ 1633024800, "1" ]
}
]
}
}

实际案例:自动化仪表盘部署

假设您需要在多个环境中部署相同的仪表盘。通过 Grafana API,您可以编写脚本来自动化这一过程。以下是一个 Python 示例:

python
import requests

API_URL = "http://localhost:3000/api/dashboards/db"
API_KEY = "YOUR_API_KEY"
DASHBOARD_JSON = {
"dashboard": {
"title": "Automated Dashboard",
"panels": [
{
"type": "graph",
"title": "CPU Usage",
"gridPos": { "x": 0, "y": 0, "w": 12, "h": 9 }
}
]
},
"folderId": 0,
"overwrite": False
}

headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}

response = requests.post(API_URL, json=DASHBOARD_JSON, headers=headers)
print(response.json())

输出示例

json
{
"id": 3,
"uid": "dash-3",
"url": "/d/dash-3/automated-dashboard",
"status": "success"
}

总结

Grafana API 是一个强大的工具,可以帮助您实现自动化操作和集成。通过本文,您已经学习了如何获取仪表盘列表、创建仪表盘、查询数据源以及自动化部署仪表盘。希望这些内容能够帮助您更好地利用 Grafana 的功能。


附加资源


练习

  1. 使用 Grafana API 创建一个包含两个图表的仪表盘。
  2. 编写脚本,定期从 Prometheus 数据源查询数据并更新仪表盘。
  3. 尝试使用 API 管理用户和权限。

祝您学习愉快!