Вы просматриваете документацию 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.
Диагноз
Такое состояние может возникнуть при следующих сценариях:
- Ранее проводилось обновление, в ходе которого PostgreSQL был недоступен.
- Временно не работает PostgreSQL из-за проблем с сетью.
-
edge-qpid-serverпопытался отправить сообщение в PostgreSQL, но PostgreSQL вернул ошибку выполнения.
Разрешение
Запишите названия очередей из Общих этапов диагностики . Например:
-
ax-q-axgroup-001-consumer-group-001 -
ax-q-axgroup-001-consumer-group-001-dl
-
Для входа в интерактивный режим командной строки
qpidвыполните командуqpid-tool:qpid-tool
Эта команда возвращает следующее:
Management Tool for QPID qpid:
Запустите
list broker, чтобы получить список активных брокеров:list broker
Эта команда возвращает следующее:
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
В столбце
IDуказан идентификатор брокера.Обратите внимание на идентификатор брокера. В примере это 125.
Выполните следующую команду, чтобы переместить сообщения из очереди недоставленных писем обратно в основную очередь:
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 .Закройте терминал qpid-tool.
quit
Подождите 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