一、什么是 Grafana 模板?
一个 Grafana 模板(或仪表板模板)是一个 JSON 文件,它定义了:
数据源: 指定要连接的数据源类型(如 Prometheus, MySQL, InfluxDB 等)。
面板: 包含各种图表(曲线图、柱状图、仪表盘、表格、热图等)。
查询: 每个面板背后从数据源获取数据的查询语句(如 PromQL, SQL)。
变量: 仪表板顶部的下拉筛选器,用于动态改变面板的查询内容(如选择不同的主机、服务、环境)。
布局与样式: 面板的位置、大小、颜色、坐标轴、图例等所有可视化设置。
二、如何获取和使用模板?
1. 主要来源
Grafana 官方仪表板仓库: Grafana Dashboards
这是最大的模板库,拥有成千上万个社区贡献的模板。
每个模板都有唯一的 ID(如 1860 对应 Node Exporter Full)。
你可以按数据源(Prometheus, MySQL)、技术栈(Kubernetes, JVM)或厂商(AWS, Azure)筛选。
项目官方文档: 许多开源监控组件(如 node_exporter, cAdvisor, MySQL)的官方文档会推荐或提供对应的 Grafana 仪表板。
GitHub: 搜索 grafana dashboard json 或特定技术栈加上 grafana 关键词。
2. 使用步骤(以官方仓库为例)
方法一:通过 ID 在线导入(最简单)
在 Grafana 左侧菜单栏,点击 Dashboards -> Import。
在 Import via grafana.com 输入框中,粘贴你找到的模板 ID(例如 1860),然后点击 Load。
为仪表板命名,并最关键的一步:为模板中定义的数据源选择你实际环境中的对应数据源。
点击 Import,一个完整的监控仪表板就创建好了。
方法二:上传 JSON 文件
在 GitHub 或文档中找到并下载 .json 文件。
在 Import 页面,点击 Upload JSON file,选择文件并上传。
后续步骤同上。
三、模板核心组件解析(以 Prometheus + Node Exporter 为例)
理解模板结构有助于你自定义。
json
{
// 1. 基础信息
"title": "Node Exporter Full",
"uid": "d2babb4a-16d5-4b3b-8b6d-7c7b6c7b6c7b",
// 2. 变量定义 - 实现动态筛选
"templating": {
"list": [
{
"name": "job", // 变量名,在查询中用 `$job` 引用
"label": "Job",
"query": "label_values(node_uname_info, job)", // PromQL查询,获取所有job标签值
"type": "query"
},
{
"name": "instance",
"label": "Instance",
"query": "label_values(node_cpu_seconds_total{job=\"$job\"}, instance)",
"type": "query",
"refresh": 2 // 变量联动:当job改变时,刷新instance列表
}
]
},
// 3. 面板列表 - 每个面板一个对象
"panels": [
{
"title": "CPU Usage",
"type": "timeseries", // 面板类型:时间序列图
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0}, // 位置和大小
"targets": [ // 数据查询目标
{
"expr": "100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\", job=\"$job\", instance=\"$instance\"}[5m])) * 100)", // PromQL查询
"legendFormat": "{{instance}} CPU Usage" // 图例格式
}
],
"fieldConfig": { // 字段/样式配置
"defaults": {
"unit": "percent", // 单位:百分比
"color": {"mode": "palette-classic"}
}
}
},
{
"title": "Memory Usage",
"type": "gauge", // 面板类型:仪表盘
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
"targets": [
{
"expr": "(node_memory_MemTotal_bytes{job=\"$job\", instance=\"$instance\"} - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100"
}
],
"fieldConfig": {
"defaults": {
"unit": "percent",
"thresholds": { // 阈值:绿色(<80),黄色(80-90),红色(>90)
"steps": [
{"color": "green", "value": null},
{"color": "yellow", "value": 80},
{"color": "red", "value": 90}
]
}
}
}
}
],
// 4. 时间范围与刷新设置
"time": {"from": "now-1h", "to": "now"},
"refresh": "30s"
}
四、创建/自定义模板的最佳实践
从社区模板开始: 不要从零开始。找一个接近你需求的模板导入,然后修改。
合理使用变量:
使用变量避免为每个服务器创建独立仪表板。
善用 $__interval、$timeFilter 等 Grafana 内置变量,让查询更高效。
优化查询:
对于 Prometheus,确保查询高效,避免全量数据扫描。
使用 rate()、increase() 等函数时,区间选择要合理。
统一风格:
统一颜色、单位(如网络用 bits/s,磁盘用 bytes)、小数位数。
为关键指标(如错误率、延迟)设置阈值,并用颜色高亮。
组织布局:
将相关指标放在一起(如所有 CPU 相关、所有网络相关)。
最重要的指标放在顶部,用大一些的面板展示。
使用 Row(行) 对面板进行分组和折叠,使仪表板更清晰。
添加说明:
使用 Text(文本) 面板为仪表板或某个部分添加说明文字。
在面板描述中解释指标含义和计算公式。
五、推荐的热门模板(ID)
基础设施监控:
1860: Node Exporter Full - 最全面的 Linux 主机监控。
315: Docker & System Monitoring - 容器和主机监控。
7371: Kubernetes / Nodes (Prometheus) - K8s 节点监控。
应用与中间件监控:
11323: MySQL Overview - MySQL 数据库监控。
2583: Redis Dashboard for Prometheus Redis Exporter - Redis 监控。
687: Spring Boot Statistics - Spring Boot 应用监控。
总结
Grafana 模板极大地提升了监控仪表板的构建效率。核心工作流是:寻找 -> 导入 -> 适配数据源 -> 自定义。通过理解其 JSON 结构和核心概念(变量、查询、面板配置),你就能将任何优秀的社区模板转化为适合自己环境的强大监控视图。先从导入一个模板开始动手实践吧!
上一条:grafana配置
下一条:grafana 告警