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 官方仪表板库导入:

  1. 访问 https://grafana.com/grafana/dashboards
  2. 搜索需要的仪表板
  3. 复制仪表板 ID
  4. 在 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) #

行用于组织和分组面板。

创建行 #

  1. 点击 “Add row”
  2. 输入行标题
  3. 将面板拖入行中

行的展开/折叠 #

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
┌─────────────────────────────────────────────────────────────┐
│                    注释类型                                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  手动注释:                                                  │
│  ├── 用户手动添加                                           │
│  ├── 记录重要事件                                           │
│  └── 支持标签和描述                                         │
│                                                             │
│  查询注释:                                                  │
│  ├── 从数据源查询获取                                       │
│  ├── 自动标记事件                                           │
│  └── 例如:部署事件、告警事件                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

添加手动注释 #

  1. 点击图表上的时间点
  2. 选择 “Add annotation”
  3. 输入描述和标签
  4. 保存

配置查询注释 #

在仪表板设置中配置:

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      生产环境                               │
│                                                             │
│  标签搜索:                                                  │
│  可通过标签快速筛选仪表板                                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

仪表板导出与导入 #

导出仪表板 #

  1. 点击仪表板设置
  2. 选择 “JSON Model”
  3. 复制或下载 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:                                                    │
│  ├── 仅查看仪表板                                           │
│  ├── 不能编辑                                               │
│  └── 不能保存修改                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

设置权限 #

  1. 进入仪表板设置
  2. 选择 “Permissions”
  3. 添加用户或团队权限

最佳实践 #

仪表板设计原则 #

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