Данные аналитики застряли в очереди недоставленных сообщений Qpidd

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

Симптом

В пользовательском интерфейсе Edge отсутствуют аналитические данные, поскольку сервер Qpidd не передает аналитические сообщения в PostgreSQL. В Edge компонент edge-qpid-server соответствует серверу Qpidd.

Qpidd поддерживает две очереди для каждой аналитической группы:

  • ax-q-axgroup001-consumer-group-001

    В этой очереди хранятся аналитические сообщения, поступающие от обработчиков сообщений и маршрутизаторов. Сообщения извлекаются отсюда edge-qpid-server , который анализирует сообщения и вставляет их в PostgreSQL. После успешной обработки сообщения удаляются из очереди.

  • ax-q-axgroup001-consumer-group-001-dl

    Эта очередь — очередь недоставленных сообщений. Она служит местом назначения для сообщений, которые edge-qpid-server не смог обработать и, следовательно, больше не желает получать. Обычно она заполняется, когда превышено максимальное количество доставленных сообщений или если PostgreSQL отклонил вставку новых данных из-за ошибок во время выполнения.

Сообщение об ошибке

Причиной могут быть различные ошибки выполнения, возникающие в компоненте edge-qpid-server . Обычно, если edge-qpid-server получает ошибку выполнения от PostgreSQL, он создает очередь недоставленных сообщений, если она еще не существует, и затем отправляет туда следующее сообщение:

yyyy-MM-dd HH:mm:ss,SSS ax-q-axgroup001-consumer-group-001-persistpool-thread-6 WARN c.a.a.m.MessageConsumer - MessageConsumer.process() : Sending message batch to the DLQ.

Возможные причины

Причина Описание Инструкции по устранению неполадок, применимые для
Сообщения застряли в очереди недоставленных писем qpidd. edge-qpid-server не мог понять сообщения, которые он считывал из брокера Qpidd, или не мог сохранить сообщения в PostgreSQL. Пользователи частного облака Edge

Общие этапы диагностики

Для просмотра статистики очереди Qpidd выполните следующую команду:

qpid-stat -q

В результате выполнения возвращается набор очередей, зарегистрированных у брокера. Если в очереди с именем, заканчивающимся на "-dl", есть сообщения, значит, в очереди недоставленных сообщений застряли какие-то сообщения.

Queues
  queue                                     dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut   cons  bind
  ========================================================================================================================
  ax-q-axgroup-001-consumer-group-001       Y                   0     185    185     0       13.8m   13.8m      6      2
  ax-q-axgroup-001-consumer-group-001-dl    Y                   0     70     70      0        3.9m    3.9m      0      2

Причина: Сообщения застряли в очереди недоставленных сообщений (dead letter queue) системы qpidd.

Диагноз

Такое состояние может возникнуть при следующих сценариях:

  1. Ранее проводилось обновление, в ходе которого PostgreSQL был недоступен.
  2. Временно не работает PostgreSQL из-за проблем с сетью.
  3. edge-qpid-server попытался отправить сообщение в PostgreSQL, но PostgreSQL вернул ошибку выполнения.

Разрешение

  1. Запишите названия очередей из Общих этапов диагностики . Например:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. Для входа в интерактивный режим командной строки qpid выполните команду qpid-tool :

    qpid-tool

    Эта команда возвращает следующее:

    Management Tool for QPID
    qpid:
  3. Запустите list broker , чтобы получить список активных брокеров:

    list broker

    Эта команда возвращает следующее:

    Object Summary:
    ID   Created   Destroyed  Index
    =======================================
    125  21:00:00  -          amqp-broker

    В столбце ID указан идентификатор брокера.

  4. Обратите внимание на идентификатор брокера. В примере это 125.

  5. Выполните следующую команду, чтобы переместить сообщения из очереди недоставленных писем обратно в основную очередь:

    call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}

    Эта команда возвращает следующее:

    OK (0) - {}

    Если вывод отсутствует, значит, ничего делать не нужно, то есть нет сообщений для перемещения. Если вы не видите OK(0) , вам следует обратиться в службу поддержки Apigee Edge .

  6. Закройте терминал qpid-tool.

    quit
  7. Подождите 5 минут, а затем снова выполните шаги диагностики из раздела «Общие шаги диагностики» . Убедитесь, что сообщения в фактической очереди обрабатываются, и проверьте, чтобы счетчик недоставленных сообщений оставался равным 0.

Если проблема по-прежнему сохраняется, перейдите к следующему разделу.

Необходимо собрать диагностическую информацию.

Если проблема сохраняется даже после выполнения вышеуказанных инструкций, пожалуйста, соберите следующую диагностическую информацию. Свяжитесь со службой поддержки Apigee Edge и предоставьте её:

  • Логи Qpidd: /opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
  • Логи PostgreSQL: /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
  • Логи Edge-qpid-server: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • Логи сервера Edge-postgres: /opt/apigee/var/log/edge-postgres-server/logs/system.log
  • Статистика очереди Qpidd:

    qpid-stat -q
  • Группа аналитики, возвращаемая следующей командой curl:

    curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax