如何在Grafana告警HTML模板中去除JSON数值的尾部多余零
问题根因
Grafana告警邮件模板使用的是Go语言标准模板引擎,你之前尝试的number过滤器是Grafana前端面板的专属模板语法,toFixed是JavaScript方法,均不适用于该场景,因此不会生效。
解决方案
直接使用Go模板内置的类型转换或格式化函数处理数值即可,针对你的需求有两种常用实现方案:
方案1:所有指标均为整数,不需要保留小数
直接用内置int函数将浮点型数值转为整数,把模板中原来的{{.Value}}替换为{{int .Value}}即可。
修改后的对应代码片段如下:
<td class="six last" style="width: 100px; word-break: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; border-collapse: collapse !important; color: #222222; font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; line-height: 19px; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; margin: 0; padding: 0px 0px 10px;" align="right" valign="top"> <h5 class="data" style="color: #222222; font-family: 'Open Sans', 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; line-height: 1.3; word-break: normal; font-size: 16px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; margin: 0; padding: 0;" align="right">{{int .Value}}</h5> </td>
方案2:需要自定义保留小数位数
用printf函数做格式化输出,可灵活调整小数保留位数:
- 保留0位小数:
{{printf "%.0f" .Value}} - 保留1位小数:
{{printf "%.1f" .Value}} - 保留2位小数:
{{printf "%.2f" .Value}}
兼容混合数值场景的扩展方案
如果你的指标既有整数也有小数,希望整数输出不带小数、小数按需要保留位数,可以用判断逻辑实现:
{{$val := .Value}} {{if eq $val (int $val)}} {{int $val}} {{else}} {{printf "%.2f" $val}} {{end}}
内容的提问来源于stack exchange,提问作者Maxi Albert
相关产品推荐
相关产品推荐

