PromQL для расчета частоты ошибок с очередями RabbitMq - PullRequest
1 голос
/ 17 июня 2020

Я использую плагин Prometheus для RabbitMq, который отслеживает количество опубликованных сообщений в разных очередях. Меня интересуют следующие метрики c: rabbitmq_queue_messages_published_total, у которых есть несколько меток, но меня интересует метка queue. В RabbitMq по умолчанию каждая очередь будет иметь связанную с ней очередь ошибок. Таким образом, если исходная очередь называется ConnectionQueue, будет очередь ConnectionQueue_Error для ошибок. Итак, наши мгновенные векторы будут выглядеть так:

rabbitmq_queue_messages_published_total{queue="ConnectionQueue",...} : 5000
rabbitmq_queue_messages_published_total{queue="ConnectionQueue_Error",...} : 50
...
rabbitmq_queue_messages_published_total{queue="SomeOtherQueue",...} : 4000
rabbitmq_queue_messages_published_total{queue="SomeOtherQueue_Error",...} : 40

Итак, я хочу рассчитать частоту ошибок для каждой очереди за последние 5 минут. Я пробовал этот запрос:

(sum by (queue)(rate(rabbitmq_queue_messages_published_total{queue=~".*(Errors)"}[5m]))) / (sum by (queue)(rate(rabbitmq_queue_messages_published_total[5m])))

Но проблема в том, что он не группирует вместе только две соответствующие очереди. Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 07 июля 2020

Вы должны добавить on в группу по метке queue как операцию left join

(sum by (queue)(rate(rabbitmq_queue_messages_published_total{queue=~".*(Errors)"}[5m]))) / on (queue) (sum by (queue)(rate(rabbitmq_queue_messages_published_total[5m])))
...