Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
Sintoma
Os dados de análise estão ausentes na nova interface do Edge devido ao fato de o servidor Qpidd não transferir mensagens de análise para o PostgreSQL. No Edge, o componente edge-qpid-server corresponde ao servidor Qpidd.
O Qpidd mantém duas filas para cada grupo de análise:
ax-q-axgroup001-consumer-group-001
Essa fila contém mensagens de análise enviadas dos processadores de mensagens e roteadores. As mensagens são extraídas daqui pelo
edge-qpid-server, que as analisa e as insere no PostgreSQL. Depois de processadas, as mensagens são removidas da fila.ax-q-axgroup001-consumer-group-001-dl
Essa fila é a fila de mensagens inativas. Ela atua como o destino de mensagens que o
edge-qpid-servernão conseguiu processar e, portanto, não quer mais receber. Isso geralmente é preenchido quando a contagem máxima de entrega é excedida ou se o PostgreSQL rejeitou a inserção de novos dados devido a erros de tempo de execução.
Mensagem de erro
A causa raiz pode ser devido a vários erros de tempo de execução do componente edge-qpid-server. Normalmente, se o edge-qpid-server receber um erro de tempo de execução do PostgreSQL, ele vai criar a fila de mensagens inativas, se ela ainda não existir, e enviar a seguinte mensagem para ela:
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.
Causas possíveis
| Causa | Descrição | Instruções de solução de problemas aplicáveis a |
|---|---|---|
| Mensagens presas na fila de mensagens inativas do qpidd | O edge-qpid-server não conseguiu entender as mensagens lidas do broker Qpidd ou não conseguiu persistir mensagens no PostgreSQL.
|
Usuários do Edge para nuvem privada |
Etapas comuns do diagnóstico
Execute o comando a seguir no nó Qpid para conferir as estatísticas da fila Qpidd:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
A saída retorna o conjunto de filas registradas no broker. Se a fila com um nome que termina em -dl tiver mensagens preenchidas (Q-Depth(Messages) no Edge para nuvem privada 4.53.00 e versões mais recentes ou msg no Edge para nuvem privada 4.52.x e versões anteriores), as mensagens vão ficar presas na fila de mensagens inativas.
Exemplo de saída no Edge para nuvem privada 4.53.00 e versões mais recentes (incluindo 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 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+
Exemplo de saída no Edge para nuvem privada 4.52.x e versões anteriores (broker
C++qpidd legado):
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
Causa: mensagens presas na fila de mensagens inativas do qpidd
Diagnóstico
Essa condição pode ocorrer nos seguintes cenários:
- Um upgrade ocorreu no passado, durante o qual o PostgreSQL estava inativo.
- Uma interrupção temporária do PostgreSQL devido a problemas de rede.
- O
edge-qpid-servertentou enviar uma mensagem para o PostgreSQL, mas o PostgreSQL retornou um erro de tempo de execução.
Resolução
Siga as etapas da sua versão do Edge para nuvem privada para mover as mensagens presas da fila de mensagens inativas de volta para a fila de análise principal.
Edge para nuvem privada 4.53.00 e versões mais recentes (incluindo 4.54.00)
O Edge para nuvem privada 4.53.00 e versões mais recentes (incluindo 4.54.00) usa o Apache Qpid Broker-J (10.0.1 na versão 4.54.00 e 8.0.6 na versão 4.53.x). A CLI qpid-tool legada foi removida do Edge para nuvem privada 4.53.00 e versões mais recentes e não pode ser usada.
Em vez disso, use a API REST de gerenciamento HTTP do Apache Qpid Broker-J (moveMessages) ou o console de gerenciamento da Web do Qpid para mover mensagens da fila de mensagens inativas de volta para a fila de análise principal:
Anote os nomes exatos da fila principal e da fila de mensagens inativas na saída das etapas comuns do diagnóstico (por exemplo,
ax-q-axgroup001-consumer-group-001eax-q-axgroup001-consumer-group-001-dlouax-q-axgroup-001-consumer-group-001eax-q-axgroup-001-consumer-group-001-dl).No nó Qpid, execute o seguinte comando
curlpara invocar a operaçãomoveMessagesna fila de mensagens inativas pela API de gerenciamento HTTP do Qpid Broker-J (porta8090por padrão):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/moveMessagesEm que:
QPID_USEReQPID_PASSWORDsão as credenciais de gerenciamento do Qpid configuradas em/opt/apigee/customer/application/qpidd.propertiesou/opt/apigee/token/application/qpidd.properties(o padrão éguest:guest).- Substitua
ax-q-axgroup001-consumer-group-001eax-q-axgroup001-consumer-group-001-dlse os nomes da fila de análise emqpid-stat -qforem diferentes. - Para mover mensagens em lotes, inclua
"limit"no corpo da solicitação JSON (por exemplo,"limit": 100000). - Se SSL/TLS estiver ativado na API de gerenciamento do Qpid (
conf_qpidd_qpid_management.https.enabled=true), usehttps://e transmita--cacert(ou-k) paracurl.
Verifique a resposta ao comando. Uma chamada bem-sucedida retorna uma matriz JSON dos IDs de mensagens internas movidas:
[ 3, 4, 5 ]
Se a matriz retornada estiver vazia (
[]), não havia mensagens na fila de mensagens inativas para mover.Aguarde 5 minutos e execute
/opt/apigee/apigee-qpidd/bin/qpid-stat -qde Etapas comuns do diagnóstico. Verifique se as mensagens na fila principal (ax-q-axgroup001-consumer-group-001) estão sendo processadas e seQ-Depth(Messages)na fila de mensagens inativas (ax-q-axgroup001-consumer-group-001-dl) permanece em0.
Edge para nuvem privada 4.52.x e versões anteriores
Anote o nome das filas nas etapas comuns do diagnóstico . Por exemplo:
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
Execute o comando
qpid-toolpara inserir um promptqpidinterativo:qpid-tool
Este comando mostra o seguinte:
Management Tool for QPID qpid:
Execute
list brokerpara receber uma lista de brokers ativos:list broker
Este comando mostra o seguinte:
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
Em que a coluna
IDespecifica o ID do broker.Anote o ID do broker. No exemplo, é
125.Execute o comando a seguir para mover as mensagens da fila de mensagens inativas de volta para a fila real:
call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}Este comando mostra o seguinte:
OK (0) - {}Se não houver saída, não havia nada a fazer, ou seja, não havia mensagens para mover. Se você não vir
OK (0), entre em contato com com o suporte do Apigee Edge.Saia do terminal
qpid-tool:quit
Aguarde 5 minutos e execute as etapas de diagnóstico novamente nas etapas comuns do diagnóstico. Verifique se as mensagens na fila real estão sendo processadas e se a contagem de
msgde mensagens inativas permanece em0.
Se o problema ainda persistir, acesse a próxima seção.
É necessário coletar informações de diagnóstico
Se o problema persistir depois de seguir as instruções anteriores, colete as seguintes informações de diagnóstico e compartilhe-as com o suporte do Apigee Edge:
- Registros do Qpidd:
/opt/apigee/var/log/apigee-qpidd/qpidd.log(Edge para nuvem privada 4.53.00 e versões mais recentes) e/opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log - Registros do PostgreSQL:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log - Registros do Edge-qpid-server:
/opt/apigee/var/log/edge-qpid-server/logs/system.log - Registros do Edge-postgres-server:
/opt/apigee/var/log/edge-postgres-server/logs/system.log Estatísticas da fila Qpidd:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
Grupo de análise retornado pelo seguinte comando curl:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax