#prometheus #grafana #promql #grafana-variable
#prometheus #графана #promql #графана-переменная
Вопрос:
Я создаю панель управления Grafana, чтобы увидеть общее количество предупреждений для каждого предупреждения о срабатывании и продолжительность (означает, что она должна фиксировать, как долго оповещения находились в состоянии срабатывания).
Запрос PromQL, используемый для сбора общего количества предупреждений, выглядит следующим образом,
count by (alertname,customerName) (changes(customer_ALERTS[24h]))
Идея состоит в том, чтобы добавить еще два столбца в панель таблицы Grafana, содержащую alert count
и duration
Теперь мне нужно получить запрос для определения продолжительности каждого предупреждения. Может кто-нибудь, пожалуйста, поделиться некоторыми мыслями?
Ответ №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)
.
Комментарии:
1. Спасибо. Я использовал второй запрос и вижу, что значение для всех предупреждений равно 8600.
(avg_over_time(customer_ALERTS{alertstate="firing",severity="critical"}[24h])) *24 * 3600
есть ли причина, по которой значение одинаково?2. не могли бы вы взглянуть на график
customer_ALERTS{alertstate="firing",severity="critical"}
за последний день?avg_over_time()
Запрос ожидает, что график не имеет пробелов и содержит 0 значений, когда предупреждение не срабатывало, и 1 значения, когда срабатывало предупреждение, как указано в ответе.