prometheus格式化告警数值

Prometheus 可以使用 $value 变量将当前告警规则表达式的数值输出到告警信息里。但是有些浮点数值位数相当长,非常不便于阅读,对于强迫症患者来说更是不可接受的。如何让告警数值变得 “人类可读” 呢?
有如下告警规则,对某个域名进行探测,访问时间超过 0.5秒 且持续 1 分钟以上则发送告警:

- name: blackbox-exporter
    rules:
    - alert: DomainAccessDelayExceeds0.5s
      annotations:
        description: 域名:{
    
    {
    
     $labels.instance }} 探测延迟大于 0.5 秒,当前延迟为:{
    
    {
    
     $value }}
        summary: 域名探测,访问延迟超过 0.5 秒
      expr: sum(probe_http_duration_seconds{
    
    job=~"blackbox"}) by (instance) > 0.5
      for: 1m
      labels:
        severity: warning
        type: blackbox

当流量超过 0.5s 时,触发了告警通知。

[1] Firing
Labels
alertname = DomainAccessDelayExceeds0.5s
instance = https://www.baidu.com
prometheus = monitoring/k8s
severity = warning
type = blackbox

Annotations
description = 域名:https://www.baidu.com 探测延迟大于 0.5 秒,当前延迟为:1.042937559
summary = 域名探测,访问延迟超过 0.5 秒

收到的告警通知信息,可以看到延迟时间小数点后长达9位

格式化下告警规则中的 $value 变量,有三种格式化数值的方法:

{
   
   { printf "%.2f" $value }}
或
{
   
   { $value | printf "%.2f" }}
或
{
   
   { humanize $value }}

经测试,{ { printf "%.2f" $value }}{ { $value | printf "%.2f" }}调整后收到的告警通知信息均只有小数点后两位;{ { humanize $value }}则为小数点后三位(比如:1.262),或显示成毫秒(比如:686.2m)

猜你喜欢

转载自blog.csdn.net/zyy247796143/article/details/130605030