Grafana 10告警模板解析:提取内存使用率数值问题
解决Grafana告警邮件模板中解析__values__字段的问题
核心思路
Grafana通知模板基于Go模板语法,__values__字段是JSON格式的字符串,需先将其解析为可操作的映射对象,再提取目标数值并格式化输出。
具体实现代码
在你的邮件通知模板中,使用以下代码片段提取并格式化内存使用率:
{{ range $alert := .Alerts }} {{ $values := jsonUnmarshal $alert.Annotations.__values__ }} {{ $ramUsage := index $values "A" }} 内存使用率: {{ printf "%.2f" $ramUsage }}% {{ end }}
代码解释
jsonUnmarshal $alert.Annotations.__values__: 将__values__的JSON字符串解析为Go映射(map),让你能直接访问其中的键值对。index $values "A": 从解析后的映射中取出键A对应的原始内存使用率数值。printf "%.2f" $ramUsage: 用Go格式化函数将数值保留两位小数,得到你需要的96.93格式。
完整邮件模板示例
整合到完整邮件通知的模板示例:
### 告警通知 **告警名称**: {{ .CommonLabels.alertname }} **监控实例**: {{ .CommonLabels.instance }} **告警触发时间**: {{ .StartsAt.Format "2006-01-02 15:04:05" }} {{ range $alert := .Alerts }} {{ $values := jsonUnmarshal $alert.Annotations.__values__ }} {{ $ramUsage := index $values "A" }} **当前内存使用率**: {{ printf "%.2f" $ramUsage }}% **告警摘要**: {{ $alert.Annotations.summary }} {{ end }}
效果验证
应用该模板后,触发告警时生成的邮件内容示例:
告警通知
告警名称: Ram usage
监控实例: 1.1.1.1:9100
告警触发时间: 2024-02-18 24:21:00当前内存使用率: 96.93%
告警摘要: "High RAM usage detected on 1.1.1.1:9100"
内容的提问来源于stack exchange,提问作者senko
相关产品推荐
相关产品推荐

