繁体   English   中英

如何使Prometheus警报描述同时给出比率和绝对数字?

[英]How to make Prometheus alert description give both ratio and absolute numbers?

我目前有一个Prometheus警报,当我的成功率下降到85%以下时会触发。

我想将比率的绝对数字添加到警报描述中。 我怎么做?

我的YAML当前看起来像这样(我清理了一些多余的细节):

groups:
  - name: recording_rules
    rules:
    - record: number_of_successes_24h
      expr: avg(sum by(instance)(my_status{kubernetes_name="my-prom",timeRange="1d",status=~"success"}))
    - record: number_of_total_24h
      expr: avg(sum by(instance)(my_status{kubernetes_name="my-prom",timeRange="1d"}))
    - record: success_rate_24h
      expr: clamp_max(number_of_successes_24h / number_of_total_24h * 100, 100)

  - name: alerting_rules
    rules:
    - alert: LowSuccessRate24H
      expr: success_rate_24h < 85
      labels:
        severity: critical
      annotations:
        summary: "CRITICAL: Low success rate 24h"
        description: "Success rate in the last 24 hours went below 85% (value: {{ $value }}%)"

我的问题是,如何在说明中添加number_of_successes_24hnumber_of_total_24h
我在https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/上阅读了官方文档,但是我迷路了。 我搜索了SO,但没有发现任何相关信息。

我读到$labels中还有其他详细信息,因此我尝试打印该示例作为示例以查看其中的内容,但是我得到了map[__name__:success_rate_24h] ,但我不知道该怎么看。

欢迎提供部分答案和指南。 谢谢。

这是我的TasksMissing警报的简化版本,它在摘要中输出缺少的任务数,任务总数和受影响的实例:

  - alert: TasksMissing
    expr: |
      job_env:up:ratio < .7
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: Tasks missing for {{ $labels.job }} in {{ $labels.env }}
      description:
       '{{ with printf `job_env:up:count{job="%s",env="%s"} - job_env:up:sum{job="%s",env="%s"}` $labels.job $labels.env $labels.job $labels.env | query }}
          {{- . | first | value -}}
        {{ end }}
        of
        {{ with printf `job_env:up:count{job="%s",env="%s"}` $labels.job $labels.env | query }}
          {{- . | first | value -}}
        {{ end }}
        {{ $labels.job }} instances are missing in {{ $labels.env }}:
        {{ range printf `up{job="%s",env="%s"}==0` $labels.job $labels.env | query }}
          {{- .Labels.instance }}
        {{ end }}'

预期结果描述类似于“ prod中缺少3个foo服务实例中的2个:foo01.prod.foo.org:8080 foo02.prod.foo.org:8080”。

这个想法是,您可以使用Go模板生成查询(通过使用printf$labels值填充模板),然后将其通过管道传输Prometheus定义的query函数中,并返回任一结果(您可以使用with处理)或多个值(您可以使用range进行迭代)。 然后,您可以直接打印时间序列值或某些标签(例如,实例名称)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM