首页/云/可观测性速查/告警模板:$labels、$value 与 humanize
Prometheus 与采集64 条

告警模板:$labels、$value 与 humanize

annotations 与 labels 支持 Go 模板:$labels 取告警标签、$value 取当前值;humanize 系列可格式化秒与百分比,让通知内容直接可读。

可观测性速查云更新于 2026-10-13

告警模板是什么

告警规则的 labels 与 annotations 支持 Go 模板语法:用 $labels 取告警携带的标签值,用 $value 取触发时的指标数值,还可以套 humanize、humanizePercentage 等格式化函数把秒数与比例转成人类可读的形式。模板决定了通知正文的质量——同一条告警,写清实例、挂载点与当前值的通知,值班一眼就能判断要不要动手。

基本信息

适用范围Prometheus 告警规则与 Alertmanager 通知模板
常用变量$labels、$value、$externalLabels
格式化函数humanize、humanizePercentage、humanizeDuration
验证方式promtool test rules 校验模板渲染结果

典型使用场景

  • 明确对象:在摘要里写清是哪台实例、哪个挂载点出问题
  • 量化说明:把当前值按百分比或时长格式化后写进正文
  • 跳转定位:注解里带 runbook_url 与看板链接
  • 统一风格:团队共用一套模板,通知格式保持一致
  • 多通道适配:同一份模板输出到 IM 与工单系统,避免重复维护

常用模板片段

常用模板片段
- alert: DiskSpaceLow
  expr: (1 - node_filesystem_avail_bytes / node_filesystem_size_bytes) > 0.9
  for: 15m
  labels:
    severity: warning
  annotations:
    summary: "{{ $labels.instance }} 磁盘使用率超过 90%"
    description: "挂载点 {{ $labels.mountpoint }},当前使用率 {{ $value | humanizePercentage }}"
    runbook_url: "https://wiki.example.com/runbook/disk-space"
    dashboard_url: "https://grafana.example.com/d/node-overview"
# 校验:promtool test rules rules_test.yml

常用函数与用途

函数或变量作用注意
$labels取标签值(实例、服务、挂载点)标签不存在时渲染为空
$value取触发时的指标值多序列触发时逐条渲染
humanize把大数字转成带单位的近似值用于容量类指标
humanizePercentage把比例转成百分数输入需为 0 到 1 的比例
humanizeDuration把秒数转成可读时长用于耗时类指标
$externalLabels取外部标签(集群、区域)跨集群告警时用于区分来源
humanizePercentage 期望输入是 0 到 1 的比例值;表达式本身已经是 0 到 100 的百分数时直接套用会渲染成夸张数字,先除 100 再格式化。
复杂模板要先用 promtool 的规则测试验证渲染结果:语法正确但输出为空是常见情况,本机测一遍比上线后从通知里发现更划算。
标签与注解的分工要分清:需要参与路由、抑制与静默的字段写在 labels 里,只供人阅读的说明写在 annotations 里;把大段说明塞进标签会抬高序列基数,还会让路由条件变得难以维护。

易错点

  • 模板引用不存在的标签会渲染为空字符串,通知变成「某实例 磁盘使用率超过 90%」这类缺失关键信息的内容
  • 格式化函数与数据口径不匹配(比例与百分数混用)会输出明显错误的数字,误导处置判断
  • 模板里堆砌过多信息会把有效内容淹没,摘要保持一行、细节放描述里
  • 只在本机改模板不跑规则测试,annotation 渲染错误要等真实告警触发才被发现

数据来源与参考

  • Prometheus 文档 · 告警模板说明
  • Alertmanager 文档 · 通知模板
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌