Проблема с подсчетом Прометея

Я пытаюсь подсчитать, сколько значений == 0 за последний час в prometheus, и пытаюсь создать правила предупреждений.

Я придумываю правила count_over_time (instance == 0 [1h]) / count_over_time (instance)

У меня ошибка показывает, что я должен следовать выражению агрегатора Prometheus.

Не уверен, в чем причина.

Очень признателен за вашу помощь.


person qing zhang    schedule 08.02.2019    source источник


Ответы (1)


Указывая на некоторые ошибки в вашем запросе:

  • instance==0 [1h]: Выбор диапазона возможен только в момент вектор, а не выражение. т.е. instance[1h] является действительным, но не упомянутым. Здесь вам нужен подзапрос, который будет выглядеть примерно так (instance==0)[1h:1m] (выберите свое разрешение).

  • count_over_time(instance): count_over_time принимает вектор диапазона, поэтому использовать нельзя здесь просто instance, который является мгновенным вектором.

Теперь, переходя к ожидаемому запросу, я понимаю, что вы хотите узнать, какой процент серии instance оказался равным 0 за последний 1 час, и предупредить об этом, для этого я предлагаю воспользоваться помощью тега for при определении предупреждений, например :

groups:
- name: example
  rules:
  - alert: ExampleAlert
    expr: count(instance == 0)/count(instance) > 0.5
    for: 1h
    annotations:
        description: "Count of (instances==0) is >50% of instances for more than 1h."

Здесь, если бы соотношение было > 0.5 (50%) для прямого 1h, это бы предупредило.

person codesome    schedule 10.02.2019
comment
Привет, Codesome, я очень признателен за вашу помощь. Это работает сейчас - person qing zhang; 11.02.2019