You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prometheus告警邮件通知中获取activeAt/startAt时间

解决Alertmanager邮件显示告警activeAt时间的问题

要在告警邮件中显示告警的激活时间(即Prometheus API里的activeAt字段),不需要在Prometheus告警规则里通过query "time()"获取当前时间,直接在Alertmanager的邮件模板中引用告警对象的内置字段即可,具体操作如下:

1. 明确字段对应关系

Prometheus会将告警激活时间(activeAt)以StartsAt字段的形式传递给Alertmanager,因此在Alertmanager的模板中可以直接访问{{ .StartsAt }}来获取这个时间。

2. 修改Alertmanager邮件模板

找到你的Alertmanager邮件通知模板(默认模板或自定义模板),在需要展示时间的位置替换为以下内容:

  • 若要显示人性化格式的时间:
    告警激活时间: {{ humanizeTimestamp .StartsAt }}
    
  • 若要自定义时间格式(比如YYYY-MM-DD HH:MM:SS UTC):
    告警激活时间: {{ .StartsAt.Format "2006-01-02 15:04:05 UTC" }}
    

3. 清理Prometheus告警规则(可选)

你当前告警规则中通过query "time()"生成的timestamp注解已无必要,可以删除该注解避免混淆,修正后的规则如下:

alerting_rules.yml: |
    groups:
    - name: example_alert
      rules:
      - alert: PodCpuUsage
        expr: (sum(container_cpu_usage_seconds_total) by (pod, namespace, container) * 100) < 10000
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "Pod {{ $labels.pod }} CPU usage below threshold"
          description: |
            Pod {{ $labels.pod }} in namespace {{ $labels.namespace }} has CPU usage below 10000 in the last 5 minutes.

(注:修正了原规则中escription的拼写错误,应为description)

4. 生效配置

重启Alertmanager加载新模板,重启Prometheus加载修改后的告警规则,之后触发的告警邮件就会显示告警真正激活的时间,而非通知发送时间。

内容的提问来源于stack exchange,提问作者user22036353

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:01:02