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

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

Симптом

Данные аналитики отсутствуют в пользовательском интерфейсе 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

Причина: сообщения застряли в очереди недоставленных писем 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-tool , чтобы ввести интерактивную подсказку qpid :

    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-сервера: /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