Оповещение, если за последние 30 минут не было получено ни одного сообщения - PullRequest
0 голосов
/ 30 августа 2018

Я работаю в запросе для Прометея. Служба с метриками предоставляет конечную точку метрик и содержит запись mymessagingservice_inbox_messagecount, показывающую, сколько сообщений находится в MSMQ входящих сообщений. У меня есть Входящие MSMQ и Аудит. Когда сообщение поступает в очередь «Входящие», моя служба удаляет его из папки «Входящие» и перемещает в «Autit». Моя цель - сделать запрос, который проверяет, сколько сообщений поступило в очередь входящих сообщений за последние 30 минут. Вот как выглядит мой запрос:

“mymessagingservice_inbox_messagecount{environment="prod"}[30m]” 

Когда я запускаю его, все результаты показывают 0. Дело в том, что очередь аудита показывает одно сообщение 2 минуты назад. Не уверен, что у меня правильный запрос или есть другой фактор, влияющий на результат. Единственное, что я могу подумать, это то, что сообщение было быстро получено из очереди входящих сообщений, и Прометей провел наблюдение до конечной точки до и после, и таким образом сообщение не было записано. Есть идеи?

1 Ответ

0 голосов
/ 30 августа 2018

Похоже, вы используете датчик и сообщаете только текущее количество ожидающих сообщений в вашей очереди. Здесь у вас есть проблема, связанная с тем, что время очистки является значимым - и, таким образом, в большинстве случаев не даст того, что вам нужно. Ваш вариант использования звучит как идеальный пример для метрики counter с функцией increase().

Счетчик - это тип метрики, который всегда увеличивается и подсчитывает общее количество (например) сообщений, поступающих в очередь. Затем вы можете применить функцию increase() для вычисления (не совсем точного) увеличения значения между первым и последним элементом в вашем векторе диапазона.

increase(mymessagingservice_inbox_messages_total{environment="prod"}[30m])

Это означает, что вам необходимо обработать код таким образом, чтобы увеличить его счетчик, как только новое сообщение будет помещено в папку «Входящие».

Подробнее см. В документах по счетчикам и функции увеличения . Вы также можете взглянуть на показатели экспортера rabbitmq, который делает это именно так: https://github.com/kbudde/rabbitmq_exporter#queues---counter

Когда все настроено, вы можете создать правило, которое вычисляет, не было ли увеличения за последние 30 минут с этим простым условием:

increase(mymessagingservice_inbox_messages_total{environment="prod"}[30m]) == 0
...