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 模型。灰度发布面板通常采用 手动创建 + 变量驱动 的方式,以便动态切换版本、环境等维度。
- 创建 Dashboard: 左侧菜单 Create → Dashboard → Add new panel。
- 添加变量: 进入 Dashboard Settings → Variables,定义
$version(新/老版本)、$environment(预发/生产)等查询变量。 - 组织布局: 使用 Row 将 Panel 分组,例如“流量概览”、“错误监控”、“延迟分布”。
- 设置时间范围: 右上角时间选择器支持相对时间(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 的完整链路,以及灰度发布场景下各环节的典型组件:
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 内部从查询到渲染的完整数据流,以及灰度发布场景下常用的转换步骤: