Очереди сообщений (APM)

Руководство по работе с разделом Очереди сообщений в APM: список MQ-сервисов, детальные дашборды, анализ операций, граф зависимостей и переходы из деталей спана.

На этой странице:

Введение

Очереди сообщений — раздел модуля APM платформы Proto Observability, в котором очереди и топики систем обмена сообщениями (Kafka, JMS, AMQP, RabbitMQ и др.) представлены как самостоятельные сущности. Для каждой очереди доступен отдельный дашборд со статистикой операций, временем обработки, процентом ошибок и списком вызывающих и потребляющих сервисов.

В отличие от инфраструктурного мониторинга брокера (см. Мониторинг очередей сообщений в инфраструктуре), этот раздел показывает очередь с точки зрения прикладной нагрузки: сколько и каких сообщений проходит через неё, как быстро они обрабатываются и какие сервисы являются продюсерами и консьюмерами.


Что такое MQ-сервис

MQ-сервис — это уникальная очередь или топик, через который инструментированные сервисы платформы обмениваются сообщениями. Платформа автоматически обнаруживает MQ-сервисы по спанам с атрибутами messaging.*:

  • messaging.system — тип системы обмена сообщениями (kafka, rabbitmq, jms, amqp и т.п.);
  • messaging.destination / messaging.destination.name — имя очереди или топика;
  • messaging.operation — вид операции (send, receive, process);
  • amqp.queue, amqp.routing_key, amqp.exchange — атрибуты AMQP / RabbitMQ.

Каждое уникальное место назначения становится отдельным MQ-сервисом. В графе зависимостей такие сервисы помечаются иконкой очереди. Полный список поддерживаемых атрибутов см. в Соглашении об именовании тегов.


Как открыть

Перейдите в раздел Приложения > Очереди сообщений в основном меню навигации платформы.

Также детальный дашборд MQ-сервиса можно открыть:

  • из вкладки Связи любого инструментированного сервиса — кликнув на узел очереди в таблице или в графе;
  • из контекстного меню узла очереди на графе сервисной топологии;
  • из деталей спана — кликнув на значения messaging.destination, messaging.destination.name или amqp.queue.

Список очередей сообщений

Страница списка показывает все обнаруженные в трейсах очереди и топики с агрегированными показателями.

Столбцы таблицы:

СтолбецОписание
Имя очереди (messaging.destination)Имя очереди или топика
Система (messaging.system)Тип системы: Kafka, RabbitMQ, JMS, AMQP и т.п.
Вызовов в минутуСреднее количество операций над очередью
Время обработкиСреднее время операции (send / process)
Процент ошибокДоля операций, завершившихся ошибкой
Зависимых сервисовКоличество сервисов, работающих с этой очередью

Возможности:

  • Поиск по имени очереди;
  • Фильтрация по типу системы (Kafka, RabbitMQ, JMS, AMQP);
  • Сортировка по любому из столбцов;
  • Настройка временного диапазона через стандартный таймпиккер платформы.

Нажмите на строку, чтобы открыть детальный дашборд MQ-сервиса.


Детальный дашборд MQ-сервиса

Детальный дашборд MQ-сервиса построен по общему шаблону дашбордов платформы и включает несколько секций. На вкладке Обзор доступны KPI и графики, на вкладке Связи — граф зависимостей, на вкладке Трейсы — Traces Explorer с предустановленным фильтром по очереди.

Дашборд очереди сообщений

Заголовок (KPI)

В верхней части дашборда размещены ключевые показатели за выбранный период:

  • Вызовы — общее число операций над очередью;
  • 95-й перцентиль времени обработки;
  • Процент ошибок.

Под каждым показателем выводится сравнение с предыдущим аналогичным периодом.

Пропускная способность (Вызовы)

Линейный график количества операций во времени за выбранный диапазон. Позволяет выявить пики, провалы и аномальные всплески нагрузки.

Время исполнения (мс)

График времени операций с перцентилями P95 и P99. Позволяет отличить общую деградацию от выбросов (long tail).

Ошибки (%)

График доли ошибочных операций во времени.

Длительность типов операций (мс)

Таблица с разбивкой по messaging.operation (send, receive, process) с количеством вызовов, средней длительностью и процентом ошибок для каждого типа. Помогает понять, на стороне продюсера или консьюмера возникает деградация.

Топ операций по ошибкам и кол-ву

Таблица операций (например, kafka.consume, kafka.produce, amqp.publish, jms.send), отсортированных по количеству вызовов и проценту ошибок. Для AMQP / RabbitMQ дополнительно отображается routing_key.

Вкладка «Трейсы»

Открывает Traces Explorer с предустановленным фильтром по выбранному MQ-сервису — для детального разбора отдельных сообщений и причин ошибок. В деталях спана в секции Очередь отображаются все amqp.* теги.


Граф зависимостей и переходы из спана

Очереди сообщений интегрированы с модулем анализа зависимостей платформы и Ресурсно-сервисной моделью:

  1. Откройте дашборд любого инструментированного сервиса, перейдите на вкладку Связи — очереди отображаются как отдельные узлы графа.
  2. На вкладке Обзор MQ-сервиса доступен граф направленных зависимостей между продюсерами, очередью и консьюмерами.
  3. В деталях любого спана с messaging-атрибутами клик на значениях messaging.destination, messaging.destination.name или amqp.queue открывает соответствующий дашборд MQ-сервиса.
  4. Аналогичный переход доступен из контекстного меню узла очереди на графе сервисной топологии.

Соотношение с инфраструктурным мониторингом MQ

Раздел Очереди сообщений APM и раздел Мониторинг очередей сообщений в инфраструктуре дополняют друг друга:

АспектAPM > Очереди сообщенийМониторинг инфраструктуры MQ
Источник данныхТрейсы инструментированных сервисов (messaging.*-спаны)JMX, Admin API, Prometheus-экспортеры брокера
Что видноСколько сообщений отправляют/обрабатывают сервисы, время обработки, процент ошибок, какие сервисы участвуютМетрики самого брокера: состояние нод, реплики, лаг консьюмер-групп, дисковое потребление
Ключ агрегацииИмя очереди / топикаХост брокера, топик, группа консьюмеров
Когда использоватьРазбор инцидентов в прикладной обработке сообщенийМониторинг здоровья брокера и кластера

Для полной картины рекомендуется использовать оба раздела совместно.


Ограничения

  • MQ-сервисы обнаруживаются только если инструментированные сервисы отправляют трейсы с messaging-спанами и проставленными атрибутами messaging.system, messaging.destination и messaging.operation.
  • Внутренние метрики брокера (длина очереди, лаг, статистика реплик) в этом разделе недоступны — для них используйте инфраструктурный мониторинг MQ.
  • JMS-спаны корректно определяют имя очереди начиная с версии 200 (атрибут peer.hostname устанавливается из имени очереди).
  • Применяются права доступа RBAC: пользователь увидит только те очереди, которые задействованы в разрешённых ему сервисах.