3. Grafana 基础回顾:数据源配置、面板与仪表盘创建、Alerting 模块简介

在灰度发布准入门禁体系中,Grafana 承担着“可视化决策中枢”的角色——它从 Prometheus、Elasticsearch 等数据源拉取实时指标,通过面板呈现金丝雀健康状态,并借助 Alerting 模块触发准入/回滚判定。本节将快速梳理 Grafana 的核心操作,为后续门禁规则配置打下基础。

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

Grafana 支持超过 30 种数据源,在灰度发布场景中最常用的是 Prometheus(指标)和 Loki(日志)。配置入口位于左侧菜单 Configuration → Data Sources。

配置项 说明 灰度发布典型值
Name 数据源标识,在面板查询时引用 Prometheus-Prod
URL 数据源 HTTP 端点 http://prometheus.monitoring:9090
Access 代理模式(Server)或浏览器直连(Browser) Server(推荐,避免 CORS)
Scrape Interval Grafana 主动拉取间隔 15s(与 Prometheus 采集对齐)
Max Series 单次查询返回的最大时间序列数 10000(防止浏览器崩溃)
最佳实践:在灰度发布环境中,建议为每个环境(staging、canary、production)创建独立的数据源实例,并在名称中加入环境后缀,例如 Prometheus-Canary。这可以避免面板查询时误跨环境拉取数据。

3.2 面板与仪表盘创建:构建金丝雀健康看板

面板(Panel)是 Grafana 的最小可视化单元,多个面板组合成仪表盘(Dashboard)。灰度发布看板通常包含:错误率面板、P99 延迟面板、CPU/内存面板、金丝雀 vs 基线对比面板。

3.2.1 创建面板的步骤

  1. 点击左侧 + → Dashboard → Add panel。
  2. 在 Query 编辑器中选择数据源(如 Prometheus),输入 PromQL 查询。
  3. 选择可视化类型:Time series(趋势)、Stat(当前值)、Table(明细)。
  4. 配置面板标题、单位、阈值颜色(绿色/黄色/红色)。
  5. 点击 Apply 保存面板到仪表盘。
灰度发布关键查询示例:
# 金丝雀错误率(5m 平均)
sum(rate(http_requests_total{version="canary", status=~"5.."}[5m])) 
/ 
sum(rate(http_requests_total{version="canary"}[5m]))

# 基线 vs 金丝雀 P99 延迟对比
histogram_quantile(0.99, 
  sum(rate(http_request_duration_seconds_bucket{version="baseline"}[5m])) by (le))
-
histogram_quantile(0.99, 
  sum(rate(http_request_duration_seconds_bucket{version="canary"}[5m])) by (le))

3.2.2 仪表盘组织原则

区域 推荐面板 刷新间隔
顶部行 金丝雀状态(Stat)、错误率(Stat) 10s
中间行 延迟对比(Time series)、吞吐量(Time series) 15s
底部行 资源使用(CPU/Mem)、日志摘要(Loki) 30s
注意:不要在一个仪表盘中放置超过 20 个面板,否则浏览器渲染会变慢,影响门禁判定的实时性。建议按微服务拆分仪表盘,每个服务一个独立看板。
Grafana 数据源 → 面板 → 仪表盘 → 门禁联动流程 数据源 Prometheus / Loki 查询编辑器 PromQL / LogQL 面板 Time series / Stat 仪表盘 金丝雀健康看板 Alerting 准入/回滚规则 门禁判定 Pass / Rollback 数据源配置 → 查询编辑 → 面板渲染 → 仪表盘聚合 → Alerting 规则 → 门禁判定,形成完整闭环

3.3 Alerting 模块简介:从可视化到自动化决策

Grafana Alerting(v8.0+ 统一架构)允许用户基于面板查询结果定义告警规则,并通过 Contact Points 发送通知。在灰度发布中,Alerting 被改造为“门禁引擎”——不再发送邮件,而是调用 Webhook 触发 CI/CD 流水线的准入/回滚决策。

3.3.1 Alerting 核心组件

组件 作用 灰度发布中的角色
Alert Rule 定义触发条件和评估频率 门禁规则(如:错误率 > 1% 持续 2m)
Contact Point 通知渠道(Email、Slack、Webhook) Webhook → Jenkins/ArgoCD API
Notification Policy 路由规则:哪个告警发往哪个 Contact Point 金丝雀告警 → 门禁 Webhook
Silence / Mute Timing 临时静音告警 灰度发布期间屏蔽误报

3.3.2 创建一条门禁告警规则

  1. 进入 Alerting → Alert rules → New alert rule。
  2. 选择 Grafana managed alert(基于面板查询)。
  3. 编写 PromQL 表达式,例如:sum(rate(http_requests_total{version="canary", status=~"5.."}[2m])) / sum(rate(http_requests_total{version="canary"}[2m])) > 0.01。
  4. 设置评估频率 1m,条件持续 2m(防止抖动)。
  5. 配置 Contact Point 为 Webhook,URL 指向 CI/CD 系统的门禁 API(如 http://jenkins/gray-release/canary-judge)。
  6. 保存并启用规则。
关键参数:
  • Pending period:告警触发后等待确认的时间,建议设为 30s~60s,避免瞬时尖峰导致误回滚。
  • For duration:条件必须持续满足的时间,灰度发布建议设为 2m~5m,确保问题稳定存在。
  • Annotations:携带版本号、环境、流水线 ID 等元数据,方便门禁系统解析。
Alerting 规则 → 门禁判定 → CI/CD 联动 Prometheus 金丝雀指标流 Alert Rule 错误率 > 1% Webhook HTTP POST 门禁 CI/CD 门禁 Jenkins / ArgoCD 决策输出 Pass / Rollback 告警触发 → Webhook 携带版本/环境信息 → CI/CD 门禁解析 → 返回 Pass/Rollback 决策

3.4 本章小结

  • 数据源是 Grafana 的根基,灰度发布场景下推荐使用 Prometheus + Loki 组合,并区分环境实例。
  • 面板与仪表盘是可视化载体,金丝雀健康看板应聚焦错误率、延迟、资源使用三大黄金指标。
  • Alerting 模块是门禁的核心引擎,通过 Webhook 将告警转化为 CI/CD 可消费的判定信号。
  • 下一章将深入讲解如何编写 PromQL 门禁表达式,并配置 Alert Rule 的 Pending/For 参数以消除抖动。