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

AlertManager邮件模板:显示告警触发时长及按StartsAt排序方法

AlertManager邮件模板:按StartsAt排序及显示告警时长的替代方案

一、按告警触发时间(StartsAt)排序

AlertManager模板内置了sort函数,可直接对告警数组按StartsAt字段排序,无需依赖额外函数。

  • 按触发时间从早到晚排序(对应告警时长从长到短),使用降序参数:
{{ range sort .Alerts "StartsAt" "desc" }}
  <!-- 单条告警内容模板 -->
  告警名称:{{ .Labels.alertname }}
  触发时间:{{ .StartsAt.Format "2006-01-02 15:04:05" }}
{{ end }}
  • 按触发时间从晚到早排序(对应告警时长从短到长),使用升序参数:
{{ range sort .Alerts "StartsAt" "asc" }}
  <!-- 单条告警内容模板 -->
{{ end }}

二、计算并显示告警已触发时长

虽然Since()函数不可用,但可以利用模板提供的.Now(当前时间)和.StartsAt的时间差来计算时长:

方式1:直接输出格式化后的时长

Go的Duration类型会自动转换为易读格式(如2h3m10s),直接调用即可:

{{ range sort .Alerts "StartsAt" "desc" }}
  告警名称:{{ .Labels.alertname }}
  已触发时长:{{ .Now.Sub .StartsAt }}
{{ end }}

方式2:自定义格式显示小时/分钟/秒

如果需要拆分显示时、分、秒,可通过Duration的方法提取对应数值:

{{ range sort .Alerts "StartsAt" "desc" }}
  {{ $duration := .Now.Sub .StartsAt }}
  告警名称:{{ .Labels.alertname }}
  已触发时长:{{ printf "%.0f小时%.0f分钟%.0f秒" $duration.Hours $duration.Minutes $duration.Seconds }}
{{ end }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:00:48