Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Symptom
В новом интерфейсе Edge отсутствуют данные Аналитики, поскольку сервер Qpidd не передает сообщения Аналитики в PostgreSQL. В Edge edge-qpid-server
компонент соответствует серверу Qpidd.
Qpidd поддерживает две очереди для каждой группы аналитики:
ax-q-axgroup001-consumer-group-001
В этой очереди хранятся сообщения аналитики, отправленные из Message Processor и Router. Сообщения извлекаются из него
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 Private Cloud |
Общие шаги диагностики
Чтобы посмотреть статистику очереди Qpidd, выполните на узле Qpid следующую команду:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
В выходных данных будет набор очередей, зарегистрированных у брокера. Если в очереди с названием, заканчивающимся на -dl, есть сообщения (Q-Depth(Messages) в Edge for Private Cloud 4.53.00 и более поздних версиях или msg в Edge for Private Cloud 4.52.x и более ранних версиях), значит сообщения застряли в очереди недоставленных сообщений.
Пример выходных данных в Edge для частного облака 4.53.00 и более поздних версий (включая 4.54.00, Apache Qpid Broker-J):
+---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | Queue Name | Messages Enqueued | Total Enqueued(B) | Messages Dequeued | Total Dequeued(B) | Consumers | Bindings | Q-Depth(Messages) | Q-Depth(B) | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | ax-q-axgroup001-consumer-group-001 | 185 | 13800000 | 185 | 13800000 | 6 | 1 | 0 | 0 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | ax-q-axgroup001-consumer-group-001-dl | 70 | 3900000 | 0 | 0 | 0 | 1 | 70 | 3900000 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+
Пример выходных данных в Edge для Private Cloud 4.52.x и более ранних версий (устаревший брокер C++):qpidd
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
диагностика;
Это может произойти в следующих случаях:
- Ранее было выполнено обновление, во время которого PostgreSQL был недоступен.
- Временный сбой PostgreSQL из-за проблем с сетью.
edge-qpid-serverпопытался отправить сообщение в PostgreSQL, но PostgreSQL вернул ошибку выполнения.
Разрешение
Следуйте инструкциям для вашей версии Edge for Private Cloud, чтобы переместить застрявшие сообщения из очереди недоставленных сообщений обратно в основную очередь аналитики.
Edge for Private Cloud 4.53.00 и более поздних версий (включая 4.54.00)
В Edge для частного облака версии 4.53.00 и более поздних (включая 4.54.00) используется Apache Qpid Broker-J (10.0.1 в версии 4.54.00 и 8.0.6 в версии 4.53.x). Устаревшая версия интерфейса командной строки qpid-tool удалена в Edge для частного облака 4.53.00 и более поздних версий и не может использоваться.
Вместо этого используйте Apache Qpid Broker-J HTTP Management REST API (moveMessages) или веб-консоль управления Qpid, чтобы переместить сообщения из очереди недоставленных сообщений обратно в основную очередь аналитики:
Запишите точные названия основной очереди и очереди недоставленных сообщений из выходных данных, полученных на этапе Общие действия по диагностике (например,
ax-q-axgroup001-consumer-group-001иax-q-axgroup001-consumer-group-001-dlилиax-q-axgroup-001-consumer-group-001иax-q-axgroup-001-consumer-group-001-dl).На узле Qpid выполните следующую команду
curl, чтобы вызвать операциюmoveMessagesв очереди недоставленных сообщений через Qpid Broker-J HTTP Management API (по умолчанию используется порт8090):curl -u QPID_USER:QPID_PASSWORD -X POST \ -H "Content-Type: application/json" \ -d '{"destination": "ax-q-axgroup001-consumer-group-001"}' \ http://127.0.0.1:8090/api/latest/queue/default/default/ax-q-axgroup001-consumer-group-001-dl/moveMessagesГде:
QPID_USERиQPID_PASSWORD– учетные данные для управления Qpid, настроенные в/opt/apigee/customer/application/qpidd.propertiesили/opt/apigee/token/application/qpidd.properties(по умолчаниюguest:guest).- Замените
ax-q-axgroup001-consumer-group-001иax-q-axgroup001-consumer-group-001-dl, если названия очереди аналитики вqpid-stat -qотличаются. - Чтобы переместить сообщения пакетами, включите
"limit"в тело запроса JSON (например,"limit": 100000). - Если в Qpid Management API (
conf_qpidd_qpid_management.https.enabled=true) включен протокол SSL/TLS, используйтеhttps://и передайте--cacert(или-k) вcurl.
Проверьте результат выполнения команды. При успешном вызове возвращается массив JSON с идентификаторами перемещенных внутренних сообщений:
[ 3, 4, 5 ]
Если возвращенный массив пуст (
[]), значит в очереди недоставленных сообщений не было сообщений для перемещения.Подождите пять минут и выполните команду
/opt/apigee/apigee-qpidd/bin/qpid-stat -qиз раздела Общие действия по диагностике. Убедитесь, что сообщения в основной очереди (ax-q-axgroup001-consumer-group-001) обрабатываются и что значениеQ-Depth(Messages)в очереди недоставленных сообщений (ax-q-axgroup001-consumer-group-001-dl) остается равным0.
Edge for Private Cloud 4.52.x и более ранние версии
Запишите названия очередей из раздела Общие шаги диагностики. Пример:
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
Выполните команду
qpid-tool, чтобы перейти к интерактивному запросуqpid: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
Подождите пять минут и повторите действия, описанные в разделе Общие действия по диагностике. Убедитесь, что сообщения в очереди обрабатываются и количество сообщений в очереди недоставленных писем остается на уровне
msg0.
Если проблема не исчезнет, перейдите к следующему разделу.
Необходимо собрать диагностическую информацию
Если после выполнения инструкций выше проблема не исчезла, соберите следующую диагностическую информацию и передайте ее в службу поддержки Apigee Edge:
- Журналы Qpidd:
/opt/apigee/var/log/apigee-qpidd/qpidd.log(Edge для Private Cloud 4.53.00 и более поздних версий) и/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:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
Группа Аналитики, возвращенная следующей командой curl:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax