Learn
Grafana/19-annotations

注解与区域标记(Annotations)

Annotations(注解) 是在时间序列图上叠加的「事件标记」。它不改变指标本身,而是在某个时间点(或一段区间)画一条竖线 / 一块阴影,用来标注「这里部署了新版本」「那一刻发生了告警」等背景信息。相比靠记忆回忆时间,注解把上下文直接钉在曲线上。

ℹ️注解与告警的区别

告警是「系统自动触发、需要响应」的规则产物;注解是「人工或外部事件留下的标记」,用于事后回顾与关联分析。

1. 两种注解类型

  • Built-in(内置):在当前 Dashboard 内手动添加,存于 Dashboard JSON,随仪表盘移动。
  • Query(查询型):由数据源(如 Prometheus)返回带时间戳的事件,所有面板可共享,适合自动化。

2. 配置查询型注解

以 Prometheus 为例,把「部署事件」标记出来:

# Dashboard → Settings → Annotations → New
name: deployments
data source: Prometheus
expr: |
  kube_pod_created{namespace="app"}
title: 新 Pod 启动
text: 实例 {{ $labels.pod }}

配置后,曲线上会出现竖线,悬停可见 text 内容。

3. 区域标记(Region)

当查询返回的是区间而非瞬间点时(如 ALERTS 指标,值为 1 的时间段),Grafana 会自动画成阴影区域:

# 用已存在的告警时间序列标记故障区间
expr: ALERTS{alertname="HighCpu"}
💡用 Graph 面板联动

在时间序列面板上开启 Annotations 后,可一眼看出「CPU 飙升」是否正好落在「发布」竖线附近 —— 快速验证因果。

4. 通过 API 写入注解

Grafana 原生注解也可直接 POST,常用于 CI 在部署时打点:

curl -X POST http://localhost:3000/api/annotations \
  -H "Authorization: Bearer $GRAFANA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"dashboardUID":"abc","time":1700000000000,"text":"v1.2.0 发布","tags":["deploy"]}'

小结

  • 注解是叠加在图上的事件标记,分内置与查询型两类
  • 查询型注解由数据源返回时间点或区间,可实现故障区域阴影
  • 配合 API,可在 CI/CD 中自动留下发布标记,便于事后归因
  • 下一步可把注解与告警时间线对照,提升排障效率 →