Запрос PromQL для определения продолжительности каждого предупреждения об увольнении

Я создаю панель управления Grafana, чтобы увидеть общее количество предупреждений для каждого предупреждения о срабатывании и продолжительность (это означает, что он должен фиксировать, как долго предупреждения были в состоянии срабатывания).

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

count by (alertname,customerName) (changes(customer_ALERTS[24h]))

Идея состоит в том, чтобы добавить еще два столбца на панели таблицы Grafana с alert count и duration

Теперь мне нужно получить запрос, чтобы фиксировать продолжительность каждого предупреждения. Кто-нибудь может поделиться некоторыми мыслями?


person akhinair    schedule 24.10.2020    source источник


Ответы (1)


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

count_over_time(customer_ALERTS[24h]) * <evaluation_interval_in_seconds>

Запрос предполагает, что customer_ALERTS содержит непустые значения при срабатывании предупреждения и не имеет никаких значений, когда предупреждение не срабатывает. Если customer_ALERTS содержит zero значений, когда предупреждение не срабатывает, и one значений, когда предупреждение срабатывает, то вместо этого следует использовать следующий запрос для определения продолжительности предупреждений в состоянии срабатывания в секундах:

avg_over_time(customer_ALERTS[24h]) * 24 * 3600

Если customer_ALERTS содержит другие значения для состояния срабатывания / отсутствия срабатывания, тогда подзапросы PromQL может использоваться для подсчета образцов в состоянии стрельбы. Также ознакомьтесь с функциями MetricsQL, такими как lifetime(m[d]), share_gt_over_time(m[d], gt) или count_gt_over_time(m[d], gt).

person valyala    schedule 08.11.2020
comment
Спасибо. Я использовал второй запрос и вижу, что значение для всех предупреждений - 8600. (avg_over_time(customer_ALERTS{alertstate="firing",severity="critical"}[24h])) *24 * 3600 по какой-либо причине, почему значение такое же? - person akhinair; 12.11.2020
comment
не могли бы вы посмотреть график customer_ALERTS{alertstate="firing",severity="critical"} за последний день? Запрос avg_over_time() предполагает, что график не имеет пропусков и содержит 0 значений, когда предупреждение не срабатывает, и 1 значение, когда предупреждение срабатывает, как указано в ответе. - person valyala; 14.11.2020