2. Grafana 基础回顾:数据源配置、Dashboard 创建、Panel 类型概览

在构建灰度发布准入面板之前,必须牢固掌握 Grafana 的三项基础操作:数据源配置、Dashboard 创建与Panel 类型选择。这三者构成了从数据接入到可视化呈现的完整链路,也是后续开发自定义面板的基石。

2.1 数据源配置:连接可观测性后端

Grafana 本身不存储时序数据,它通过数据源(Data Source)插件与后端存储系统通信。灰度发布场景下,最常用的数据源是 Prometheus(指标)和 Elasticsearch(日志),但 Loki、InfluxDB、Graphite 也常见于生产环境。

配置要点: 在 Grafana 左侧菜单点击 Configuration → Data Sources → Add data source。每个数据源需要填写 URL、认证方式(Basic Auth / )、默认查询超时等参数。建议为每个环境(开发/预发/生产)创建独立的数据源实例,并在名称中标注环境后缀,例如 Prometheus-Prod。
数据源类型 典型用途 关键配置字段 灰度发布场景示例
Prometheus 应用指标、服务延迟、错误率 URL、Scrape Interval、HTTP Method 查询新老版本 QPS 对比
Elasticsearch 应用日志、错误堆栈、访问日志 URL、Index Name、Time Field 按 version 字段过滤错误日志
Loki 轻量级日志聚合 URL、Auth 、Max Lines 实时追踪灰度流量日志
InfluxDB 自定义业务指标、事件计数 URL、Database、User/Password 记录灰度发布事件计数
常见错误: 数据源 URL 填写了内网地址但 Grafana 实例部署在外部;未配置正确的 Access Control(如 Basic Auth 用户名密码错误);Prometheus 数据源未设置正确的 HTTP Method(应使用 POST 避免 URI 过长)。配置完成后务必点击 Save & Test 验证连通性。

2.2 Dashboard 创建:组织可视化空间

Dashboard 是 Grafana 中组织 Panel 的容器。创建 Dashboard 有两种方式:从空白创建或导入 JSON 模型。灰度发布面板通常采用 手动创建 + 变量驱动 的方式,以便动态切换版本、环境等维度。

  1. 创建 Dashboard: 左侧菜单 Create → Dashboard → Add new panel。
  2. 添加变量: 进入 Dashboard Settings → Variables,定义 $version(新/老版本)、$environment(预发/生产)等查询变量。
  3. 组织布局: 使用 Row 将 Panel 分组,例如“流量概览”、“错误监控”、“延迟分布”。
  4. 设置时间范围: 右上角时间选择器支持相对时间(Last 15m)和时间,灰度发布通常关注最近 5-30 分钟。
最佳实践: 为每个灰度发布项目创建独立的 Dashboard,并在名称中加入项目代号和日期,例如 [Canary] Order-Service v2.3.1 2025-04-07。使用 Dashboard 标签(Tags)进行分类,便于后期检索。

2.3 Panel 类型概览:选择正确的可视化方式

Grafana 提供了超过 20 种原生 Panel 类型。灰度发布准入面板中,最常用的 Panel 类型集中在 时序图、统计图 和 表格 三类。下表对比了核心 Panel 的适用场景:

Panel 类型 可视化形态 灰度发布典型用途 数据源要求
Time Series 折线图/面积图 新老版本 QPS、延迟 P99 趋势对比 Prometheus、InfluxDB
Stat 单个数值 + 阈值色标 当前错误率、健康实例数 任意时序数据源
Table 行列数据表 按版本聚合的错误详情、实例列表 SQL、Elasticsearch、Loki
Bar Gauge 水平/垂直进度条 资源使用率、版本流量占比 Prometheus
Pie Chart 饼图/环形图 流量分布、错误类型占比 任意数据源(需预聚合)
Logs 实时日志流 灰度版本实时日志查看 Loki、Elasticsearch

下图展示了从数据源到 Dashboard 再到 Panel 的完整链路,以及灰度发布场景下各环节的典型组件:

Grafana 数据链路:数据源 → Dashboard → Panel Prometheus Elasticsearch Loki InfluxDB Dashboard:[Canary] Order-Service v2.3.1 Time Series:QPS 对比 Stat:错误率 Table:错误详情 Bar Gauge:流量占比 数据源通过插件接入 → Dashboard 通过变量驱动 → Panel 按灰度发布需求选择类型

2.4 Panel 配置核心:查询与转换

每个 Panel 的核心是 查询编辑器(Query Editor) 和 数据转换(Transformations)。查询编辑器负责从数据源拉取原始数据,数据转换则对结果进行二次加工(如合并、过滤、数学运算)。

  • PromQL 查询示例: rate(http_requests_total{version="$version"}[5m]) — 按版本变量查询每秒请求数。
  • LogQL 查询示例: {app="order-service", version="$version"} |= "ERROR" | json — 按版本过滤错误日志。
  • 常用转换: Merge(合并多个查询)、Group By(按标签聚合)、Reduce(将时间序列转为单值)、Filter by name(按字段名过滤)。
灰度发布关键技巧: 在 Time Series Panel 中,使用 Override 功能为不同版本设置不同颜色(新版本用绿色,老版本用灰色),并添加阈值线(如错误率 > 1% 标红)。在 Stat Panel 中,设置 Thresholds 让数值在超过安全范围时自动变色,便于快速判断准入状态。

下图展示了 Panel 内部从查询到渲染的完整数据流,以及灰度发布场景下常用的转换步骤:

Panel 内部数据流:查询 → 转换 → 可视化 查询编辑器 PromQL / LogQL / SQL 数据转换 Merge / Group By / Reduce 可视化渲染 折线 / 数值 / 表格 灰度发布典型转换流程 1. 查询新版本(version="v2.3.1")和老版本(version="v2.3.0")的 QPS 指标 2. 使用 Merge 将两个查询结果合并为同一数据集 3. 使用 Group By 按 version 标签分组,计算每组平均值

2.5 小结:基础回顾与课程衔接