Как сделать так, чтобы в описании оповещения Прометея были указаны как коэффициенты, так и абсолютные числа? - PullRequest
1 голос
/ 18 июня 2019

В настоящее время у меня есть предупреждение 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_24h и number_of_total_24h в описание?
Я прочитал официальную документацию по https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/,, но заблудился;Я искал SO, но не нашел ничего релевантного.

Я прочитал, что в $labels доступны дополнительные подробности, поэтому я попытался распечатать его в качестве примера, чтобы увидеть, что в нем, но я получилmap[__name__:success_rate_24h], и я не мог понять, как это увидеть внутри.

Приветствуются частичные ответы и руководства.Спасибо.

1 Ответ

3 голосов
/ 19 июня 2019

Вот упрощенная версия моего 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 }}'

Ожидается, что полученное в результате описание будет выглядеть примерно так: «2 из 3 экземпляров foo-службы отсутствуют в prod: foo01.prod.foo.org:8080 foo02.prod.foo.org:8080".

Идея состоит в том, что вы используете шаблоны Go для генерации запроса (путем заполнения шаблона значениями $labels с использованием printf), а затем передаете его в query определенную Прометеем *1010* функцию и получить обратно либо один результат (который вы можете обработать, используя with), либо несколько значений (которые вы можете повторить, используя range). Затем вы можете напечатать либо значение временной серии напрямую, либо какую-либо метку (например, имя экземпляра).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...