Grafana 仪表板基础 #
什么是仪表板? #
仪表板(Dashboard)是 Grafana 的核心概念,它是一个或多个面板(Panel)的集合,用于展示来自数据源的监控数据。
text
┌─────────────────────────────────────────────────────────────┐
│ 仪表板 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Dashboard │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Panel 1 │ │ Panel 2 │ │ Panel 3 │ │ │
│ │ │ (CPU) │ │ (Memory) │ │ (Disk) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ ┌─────────────────────────────────────────────────┐│ │
│ │ │ Panel 4 ││ │
│ │ │ (Network Traffic) ││ │
│ │ └─────────────────────────────────────────────────┘│ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
创建仪表板 #
方式一:从零创建 #
text
┌─────────────────────────────────────────────────────────────┐
│ 创建仪表板步骤 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 点击左侧菜单 "+" 按钮 │
│ │
│ 2. 选择 "New Dashboard" │
│ │
│ 3. 选择添加面板方式: │
│ ├── Add visualization 添加可视化面板 │
│ ├── Add row 添加行分组 │
│ ├── Import dashboard 导入仪表板 │
│ └── Add panel from panel library 从库中添加 │
│ │
│ 4. 配置面板查询和显示 │
│ │
│ 5. 保存仪表板 │
│ │
└─────────────────────────────────────────────────────────────┘
方式二:导入现有仪表板 #
从 Grafana 官方仪表板库导入:
- 访问 https://grafana.com/grafana/dashboards
- 搜索需要的仪表板
- 复制仪表板 ID
- 在 Grafana 中选择 Import → 输入 ID → Load → Import
方式三:使用 Provisioning #
yaml
apiVersion: 1
providers:
- name: 'default'
orgId: 1
folder: 'Monitoring'
type: file
disableDeletion: false
updateIntervalSeconds: 30
options:
path: /var/lib/grafana/dashboards
仪表板设置 #
基本设置 #
text
┌─────────────────────────────────────────────────────────────┐
│ 仪表板设置项 │
├─────────────────────────────────────────────────────────────┤
│ │
│ General(常规): │
│ ├── Name 仪表板名称 │
│ ├── Description 描述 │
│ ├── Tags 标签(用于分类) │
│ └── Folder 所属文件夹 │
│ │
│ Annotations(注释): │
│ ├── 添加注释标注 │
│ └── 配置注释查询 │
│ │
│ Links(链接): │
│ ├── 添加外部链接 │
│ └── 链接到其他仪表板 │
│ │
│ Permissions(权限): │
│ ├── 设置访问权限 │
│ └── 团队权限管理 │
│ │
│ Version history(版本历史): │
│ ├── 查看历史版本 │
│ └── 回滚到之前版本 │
│ │
└─────────────────────────────────────────────────────────────┘
时间设置 #
json
{
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h"],
"time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"]
},
"timezone": "browser"
}
时间范围选项 #
text
┌─────────────────────────────────────────────────────────────┐
│ 时间范围表达式 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 相对时间: │
│ ├── now 当前时间 │
│ ├── now-5m 5 分钟前 │
│ ├── now-1h 1 小时前 │
│ ├── now-6h 6 小时前 │
│ ├── now-24h 24 小时前 │
│ ├── now-7d 7 天前 │
│ ├── now-30d 30 天前 │
│ └── now/d 今天开始 │
│ │
│ 绝对时间: │
│ ├── 2024-01-01 00:00:00 │
│ └── 2024-01-31 23:59:59 │
│ │
│ 快捷选择: │
│ ├── Last 5 minutes │
│ ├── Last 15 minutes │
│ ├── Last 1 hour │
│ ├── Last 3 hours │
│ ├── Last 6 hours │
│ ├── Last 12 hours │
│ ├── Last 24 hours │
│ ├── Last 2 days │
│ ├── Last 7 days │
│ └── Last 30 days │
│ │
└─────────────────────────────────────────────────────────────┘
面板布局 #
网格系统 #
Grafana 使用 24 列网格系统:
text
┌─────────────────────────────────────────────────────────────┐
│ 24 列网格系统 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 网格:24 列 x N 行 │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 24│ │
│ ├───────────────────────────────────────────────────────┤ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌───────────┐ │ │
│ │ │ Panel 1 │ │ Panel 2 │ │ Panel 3 │ │ │
│ │ │ (8 列) │ │ (8 列) │ │ (8 列) │ │ │
│ │ └─────────────────┘ └─────────────────┘ └───────────┘ │ │
│ │ ┌───────────────────────────────────────────────────┐ │ │
│ │ │ Panel 4 │ │ │
│ │ │ (24 列) │ │ │
│ │ └───────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
面板尺寸配置 #
json
{
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 0
}
}
参数说明:
h:高度(单位格数)w:宽度(单位格数,最大 24)x:水平位置(0-23)y:垂直位置
常用布局示例 #
text
┌─────────────────────────────────────────────────────────────┐
│ 常用布局模式 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 三列布局: │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Panel │ │ Panel │ │ Panel │ │
│ │ (8 列) │ │ (8 列) │ │ (8 列) │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ 两列布局: │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ Panel │ │ Panel │ │
│ │ (12 列) │ │ (12 列) │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ 1+2 布局: │
│ ┌───────────────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Panel │ │ Panel │ │ Panel │ │
│ │ (12 列) │ │ (6 列) │ │ (6 列) │ │
│ └───────────────────┘ └──────────┘ └──────────┘ │
│ │
│ 全宽布局: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Panel │ │
│ │ (24 列) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
变量(Variables) #
变量是 Grafana 的强大功能,允许创建动态、可复用的仪表板。
变量类型 #
text
┌─────────────────────────────────────────────────────────────┐
│ 变量类型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Query:从数据源查询获取值 │
│ ├── Prometheus 查询 │
│ ├── InfluxDB 查询 │
│ └── SQL 查询 │
│ │
│ Custom:自定义值列表 │
│ ├── 手动输入选项 │
│ └── 适用于固定选项 │
│ │
│ Constant:常量 │
│ ├── 固定值 │
│ └── 可在查询中引用 │
│ │
│ Text box:文本输入框 │
│ ├── 用户自由输入 │
│ └── 适用于过滤条件 │
│ │
│ Datasource:数据源选择 │
│ ├── 动态切换数据源 │
│ └── 多环境监控 │
│ │
│ Interval:时间间隔 │
│ ├── 自动时间间隔 │
│ └── 用于数据聚合 │
│ │
│ Ad hoc filters:临时过滤器 │
│ ├── 动态过滤条件 │
│ └── 仅部分数据源支持 │
│ │
└─────────────────────────────────────────────────────────────┘
创建变量 #
在仪表板设置中添加变量:
text
┌─────────────────────────────────────────────────────────────┐
│ 变量配置界面 │
├─────────────────────────────────────────────────────────────┤
│ │
│ General: │
│ ├── Name: $server │
│ ├── Type: Query │
│ ├── Label: Server │
│ └── Hide: (显示/隐藏/仅标签) │
│ │
│ Query Options: │
│ ├── Data source: Prometheus │
│ ├── Query: label_values(node_cpu_seconds_total, instance) │
│ ├── Refresh: On Dashboard Load │
│ └── Sort: Alphabetical │
│ │
│ Selection Options: │
│ ├── Multi-value: ☑ │
│ ├── Include All option: ☑ │
│ └── Custom all value: .* │
│ │
└─────────────────────────────────────────────────────────────┘
常用变量查询示例 #
Prometheus 查询 #
promql
label_values(metric_name, label_name)
label_values(node_cpu_seconds_total, instance)
label_values(node_cpu_seconds_total{job="node"}, instance)
query_result(count by (instance) (node_cpu_seconds_total))
InfluxDB 查询 #
sql
SHOW TAG VALUES FROM "measurement" WITH KEY = "tag_key"
SHOW TAG VALUES FROM "cpu" WITH KEY = "host"
MySQL 查询 #
sql
SELECT DISTINCT hostname FROM servers WHERE environment = 'production'
变量使用 #
在查询中使用变量:
promql
node_cpu_seconds_total{instance=~"$server"}
node_memory_MemAvailable_bytes{instance="$server", job="$job"}
rate(http_requests_total{method="$method", status=~"$status"}[5m])
变量链接 #
在面板标题或文本中使用变量:
text
Server: $server
Current Time: $__timeFrom - $__timeTo
行(Row) #
行用于组织和分组面板。
创建行 #
- 点击 “Add row”
- 输入行标题
- 将面板拖入行中
行的展开/折叠 #
text
┌─────────────────────────────────────────────────────────────┐
│ 行的展开/折叠 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 展开状态: │
│ ▼ System Metrics │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ CPU │ │ Memory │ │ Disk │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ 折叠状态: │
│ ▶ System Metrics │
│ │
└─────────────────────────────────────────────────────────────┘
行配置 #
json
{
"type": "row",
"title": "System Metrics",
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
}
}
注释(Annotations) #
注释用于在图表上标记重要事件。
注释类型 #
text
┌─────────────────────────────────────────────────────────────┐
│ 注释类型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 手动注释: │
│ ├── 用户手动添加 │
│ ├── 记录重要事件 │
│ └── 支持标签和描述 │
│ │
│ 查询注释: │
│ ├── 从数据源查询获取 │
│ ├── 自动标记事件 │
│ └── 例如:部署事件、告警事件 │
│ │
└─────────────────────────────────────────────────────────────┘
添加手动注释 #
- 点击图表上的时间点
- 选择 “Add annotation”
- 输入描述和标签
- 保存
配置查询注释 #
在仪表板设置中配置:
yaml
annotations:
- name: Deployments
datasource: Prometheus
enable: true
query: deployment_events
titleField: deployment_name
timeField: timestamp
tagsField: tags
链接(Links) #
链接用于导航到其他仪表板或外部资源。
链接类型 #
text
┌─────────────────────────────────────────────────────────────┐
│ 链接类型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Dashboard links: │
│ ├── 链接到其他仪表板 │
│ └── 可传递变量参数 │
│ │
│ External links: │
│ ├── 链接到外部 URL │
│ └── 支持变量替换 │
│ │
└─────────────────────────────────────────────────────────────┘
添加仪表板链接 #
text
┌─────────────────────────────────────────────────────────────┐
│ 仪表板链接配置 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Type: Dashboard │
│ Title: View Details │
│ Dashboard: Server Details │
│ Variables: │
│ server: $server │
│ time: $__from │
│ │
└─────────────────────────────────────────────────────────────┘
添加外部链接 #
text
┌─────────────────────────────────────────────────────────────┐
│ 外部链接配置 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Type: Link │
│ Title: Documentation │
│ URL: https://docs.example.com/server/$server │
│ Icon: external link │
│ Open in new tab: ☑ │
│ │
└─────────────────────────────────────────────────────────────┘
仪表板组织 #
文件夹管理 #
text
┌─────────────────────────────────────────────────────────────┐
│ 文件夹结构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Dashboards │
│ ├── Infrastructure │
│ │ ├── Server Overview │
│ │ ├── Network Monitoring │
│ │ └── Storage Metrics │
│ ├── Applications │
│ │ ├── API Performance │
│ │ ├── Database Metrics │
│ │ └── Service Health │
│ └── Business │
│ ├── Sales Dashboard │
│ └── User Analytics │
│ │
└─────────────────────────────────────────────────────────────┘
标签管理 #
使用标签对仪表板进行分类:
text
┌─────────────────────────────────────────────────────────────┐
│ 标签示例 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 常用标签: │
│ ├── infrastructure 基础设施 │
│ ├── application 应用监控 │
│ ├── business 业务指标 │
│ ├── kubernetes Kubernetes │
│ ├── prometheus Prometheus │
│ └── production 生产环境 │
│ │
│ 标签搜索: │
│ 可通过标签快速筛选仪表板 │
│ │
└─────────────────────────────────────────────────────────────┘
仪表板导出与导入 #
导出仪表板 #
- 点击仪表板设置
- 选择 “JSON Model”
- 复制或下载 JSON
导出选项:
text
┌─────────────────────────────────────────────────────────────┐
│ 导出选项 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Export for sharing externally: │
│ ├── 移除敏感信息 │
│ ├── 适合分享给他人 │
│ │
│ Export for sharing externally (with data source IDs): │
│ ├── 保留数据源 ID │
│ ├── 适合同一环境导入 │
│ │
│ View JSON: │
│ └── 查看完整 JSON 配置 │
│ │
└─────────────────────────────────────────────────────────────┘
导入仪表板 #
方式一:上传 JSON 文件
方式二:粘贴 JSON 内容
方式三:使用仪表板 ID
text
┌─────────────────────────────────────────────────────────────┐
│ 导入流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 点击 "+" → "Import" │
│ │
│ 2. 输入方式: │
│ ├── Upload JSON file │
│ ├── Import via grafana.com (ID: 1860) │
│ └── Import via panel json │
│ │
│ 3. 配置选项: │
│ ├── Name: 仪表板名称 │
│ ├── Folder: 目标文件夹 │
│ ├── Data Source: 数据源映射 │
│ └── Constants: 常量配置 │
│ │
│ 4. 点击 "Import" 完成 │
│ │
└─────────────────────────────────────────────────────────────┘
热门社区仪表板 #
text
┌─────────────────────────────────────────────────────────────┐
│ 推荐仪表板 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Node Exporter Full (ID: 1860) │
│ └── 服务器监控完整仪表板 │
│ │
│ Kubernetes Cluster (ID: 315) │
│ └── Kubernetes 集群监控 │
│ │
│ Docker Container (ID: 893) │
│ └── Docker 容器监控 │
│ │
│ Nginx Ingress (ID: 9614) │
│ └── Nginx Ingress 监控 │
│ │
│ Redis Dashboard (ID: 763) │
│ └── Redis 监控仪表板 │
│ │
│ MySQL Overview (ID: 7362) │
│ └── MySQL 监控仪表板 │
│ │
└─────────────────────────────────────────────────────────────┘
仪表板权限 #
权限级别 #
text
┌─────────────────────────────────────────────────────────────┐
│ 权限级别 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Admin: │
│ ├── 完全控制 │
│ ├── 编辑和删除 │
│ ├── 管理权限 │
│ └── 修改设置 │
│ │
│ Editor: │
│ ├── 查看仪表板 │
│ ├── 编辑仪表板 │
│ ├── 保存修改 │
│ └── 不能删除或管理权限 │
│ │
│ Viewer: │
│ ├── 仅查看仪表板 │
│ ├── 不能编辑 │
│ └── 不能保存修改 │
│ │
└─────────────────────────────────────────────────────────────┘
设置权限 #
- 进入仪表板设置
- 选择 “Permissions”
- 添加用户或团队权限
最佳实践 #
仪表板设计原则 #
text
┌─────────────────────────────────────────────────────────────┐
│ 设计原则 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 清晰的层次结构 │
│ ├── 重要指标放在顶部 │
│ ├── 使用行分组相关面板 │
│ └── 从概览到详情 │
│ │
│ 2. 合理的布局 │
│ ├── 相关面板放在一起 │
│ ├── 统一面板尺寸 │
│ └── 留出适当间距 │
│ │
│ 3. 使用变量提高复用性 │
│ ├── 服务器选择变量 │
│ ├── 应用选择变量 │
│ └── 环境选择变量 │
│ │
│ 4. 添加说明文档 │
│ ├── 仪表板描述 │
│ ├── 面板说明 │
│ └── 指标解释 │
│ │
│ 5. 统一的颜色方案 │
│ ├── 使用一致的颜色含义 │
│ ├── 红色表示问题 │
│ └── 绿色表示正常 │
│ │
└─────────────────────────────────────────────────────────────┘
命名规范 #
text
仪表板命名:[环境] [系统] [功能]
示例:
- Production - Server Overview
- Staging - API Performance
- Development - Database Metrics
面板命名:[指标名称] - [单位]
示例:
- CPU Usage - %
- Memory Available - GB
- Request Rate - req/s
下一步 #
掌握了仪表板基础后,接下来学习 面板类型,深入了解各种可视化面板的使用方法!
最后更新:2026-03-29