Запрос на объединение времени безотказной работы нескольких приложений с помощью PromQL - PullRequest
0 голосов
/ 21 мая 2019

В PromQL я пытаюсь запросить время безотказной работы нескольких приложений и визуализировать его с помощью Grafana.

Мне нужно иметь "и" (я не знаю, подходит ли это термин) времени работы двух приложений, поэтому он должен возвращать только 1 для любого заданного момента времени, если все заданные приложения в запросе работают, иначе 0. В конце я хочу иметь одно значение,это показывает мне среднее время работы за последние 30 дней

Это дает мне то, что я хочу для одного приложения (мне нужно clamp_max и > 0, но это не так важно здесь).

avg_over_time((max by (job)(clamp_max(up{space="$space",job="job1"},1)) )[30d:5m]) > 0

Как я могу объединить два из этих запросов, чтобы я мог получить желаемый результат?Я ознакомился с документацией PromQL, но пока не нашел решения.

1 Ответ

0 голосов
/ 22 мая 2019

PromQL, указывающий, все ли приложения работают в любой момент времени, может быть вычислен путем тестирования, когда сумма целевой цели равна количеству цели (фильтры и агрегация опущены):

count(up) == bool sum(up)

== bool даст скаляр , который равен 0 (ложь) или 1 (истина), в зависимости от результата сравнения .

Затем вы можете вычислить среднее значение, как вы указали:

avg_over_time((count(up) == bool sum(up))[30d:5m])

При фильтрации выражение становится

avg_over_time((count(up{job=~"job[12]"}) == bool sum(up{job=~"job[12]"}))[30d:5m])
...