Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Sintomo
I dati di Analytics non sono presenti nella nuova UI di Edge perché il server Qpidd non trasferisce i messaggi di Analytics a PostgreSQL. In Edge, il componente edge-qpid-server corrisponde al server Qpidd.
Qpidd gestisce due code per ogni gruppo di analisi:
ax-q-axgroup001-consumer-group-001
Questa coda contiene i messaggi di Analytics inviati dai processori di messaggi e dai router. I messaggi vengono estratti da qui da
edge-qpid-server, che li analizza e li inserisce in PostgreSQL. Una volta elaborati correttamente, i messaggi vengono rimossi dalla coda.ax-q-axgroup001-consumer-group-001-dl
Questa coda è la coda di messaggi non recapitabili. Funge da destinazione per i messaggi che
edge-qpid-servernon è riuscito a elaborare e che quindi non vuole più ricevere. In genere viene compilata quando viene superato il conteggio massimo delle consegne o se PostgreSQL ha rifiutato l'inserimento di nuovi dati a causa di errori di runtime.
Messaggio di errore
La causa principale potrebbe essere dovuta a vari errori di runtime del componente edge-qpid-server. In genere, se edge-qpid-server riceve un errore di runtime da PostgreSQL, crea la coda di messaggi non recapitabili, se non esiste già, e poi vi invia il seguente messaggio:
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.
Possibili cause
| Causa | Descrizione | Istruzioni per la risoluzione dei problemi applicabili a |
|---|---|---|
| Messaggi bloccati nella coda di messaggi non recapitabili di qpidd | edge-qpid-server non è riuscito a comprendere i messaggi letti dal broker Qpidd o non è riuscito a rendere persistenti i messaggi in PostgreSQL.
|
Utenti di Edge Private Cloud |
Passaggi comuni per la diagnosi
Esegui il seguente comando sul nodo Qpid per visualizzare le statistiche della coda Qpidd:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
L'output restituisce l'insieme di code registrate con il broker. Se la coda con un nome che termina con -dl contiene messaggi (Q-Depth(Messages) in Edge for Private Cloud 4.53.00 e versioni successive o msg in Edge for Private Cloud 4.52.x e versioni precedenti), i messaggi sono bloccati nella coda di messaggi non recapitabili.
Esempio di output in Edge for Private Cloud 4.53.00 e versioni successive (inclusa la 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 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+
Esempio di output in Edge for Private Cloud 4.52.x e versioni precedenti (broker
C++ legacyqpidd):
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: messaggi bloccati nella coda di messaggi non recapitabili di qpidd
Diagnosi
Questa condizione può verificarsi nei seguenti scenari:
- In passato è stato eseguito un upgrade durante il quale PostgreSQL era inattivo.
- Un'interruzione temporanea di PostgreSQL a causa di problemi di rete.
edge-qpid-serverha tentato di inviare un messaggio a PostgreSQL, ma PostgreSQL ha restituito un errore di runtime.
Risoluzione
Segui i passaggi per la tua versione di Edge for Private Cloud per spostare i messaggi bloccati dalla coda di messaggi non recapitabili alla coda di analisi principale.
Edge for Private Cloud 4.53.00 e versioni successive (inclusa la 4.54.00)
Edge for Private Cloud 4.53.00 e versioni successive (inclusa la 4.54.00) utilizza Apache Qpid Broker-J (10.0.1 nella 4.54.00 e 8.0.6 nella 4.53.x). La CLI qpid-tool legacy è stata rimossa in Edge for Private Cloud 4.53.00 e versioni successive e non può essere utilizzata.
Utilizza invece l'API REST di gestione HTTP di Apache Qpid Broker-J (moveMessages) o la console di gestione web di Qpid per spostare i messaggi dalla coda di messaggi non recapitabili alla coda di analisi principale:
Prendi nota dei nomi esatti della coda principale e della coda di messaggi non recapitabili dall'output dei passaggi comuni per la diagnosi (ad esempio,
ax-q-axgroup001-consumer-group-001eax-q-axgroup001-consumer-group-001-dloppureax-q-axgroup-001-consumer-group-001eax-q-axgroup-001-consumer-group-001-dl).Sul nodo Qpid, esegui il seguente comando
curlper richiamare l'operazionemoveMessagessulla coda di messaggi non recapitabili tramite l'API di gestione HTTP di Qpid Broker-J (porta8090per impostazione predefinita):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/moveMessagesDove:
QPID_USEReQPID_PASSWORDsono le credenziali di gestione di Qpid configurate in/opt/apigee/customer/application/qpidd.propertieso/opt/apigee/token/application/qpidd.properties(il valore predefinito èguest:guest).- Sostituisci
ax-q-axgroup001-consumer-group-001eax-q-axgroup001-consumer-group-001-dlse i nomi delle code di analisi inqpid-stat -qsono diversi. - Per spostare i messaggi in batch, includi
"limit"nel corpo della richiesta JSON (ad esempio,"limit": 100000). - Se SSL/TLS è abilitato nell'API di gestione di Qpid (
conf_qpidd_qpid_management.https.enabled=true), utilizzahttps://e passa--cacert(o-k) acurl.
Verifica l'output del comando. Una chiamata riuscita restituisce un array JSON degli ID dei messaggi interni spostati:
[ 3, 4, 5 ]
Se l'array restituito è vuoto (
[]), non sono presenti messaggi nella coda di messaggi non recapitabili da spostare.Attendi 5 minuti, quindi esegui
/opt/apigee/apigee-qpidd/bin/qpid-stat -qda Passaggi comuni per la diagnosi. Verifica che i messaggi nella coda principale (ax-q-axgroup001-consumer-group-001) vengano elaborati e cheQ-Depth(Messages)nella coda di messaggi non recapitabili (ax-q-axgroup001-consumer-group-001-dl) rimanga a0.
Edge for Private Cloud 4.52.x e versioni precedenti
Prendi nota del nome delle code dai passaggi comuni per la diagnosi. Ad esempio:
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
Esegui il comando
qpid-toolper inserire un promptqpidinterattivo:qpid-tool
Questo comando restituisce quanto segue:
Management Tool for QPID qpid:
Esegui
list brokerper ottenere un elenco dei broker attivi:list broker
Questo comando restituisce quanto segue:
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
Dove la colonna
IDspecifica l'ID del broker.Prendi nota dell'ID del broker. Nell'esempio è
125.Esegui il seguente comando per spostare i messaggi dalla coda di messaggi non recapitabili alla coda effettiva:
call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}Questo comando restituisce quanto segue:
OK (0) - {}Se non è presente alcun output, non è stato eseguito alcun intervento, il che significa che non sono presenti messaggi da spostare. Se non vedi
OK (0), devi contattare l'assistenza di Apigee Edge.Esci dal terminale
qpid-tool:quit
Attendi 5 minuti, quindi esegui di nuovo i passaggi per la diagnosi da Passaggi comuni per la diagnosi. Verifica che i messaggi nella coda effettiva vengano elaborati e che il conteggio
msgdei messaggi non recapitabili rimanga a0.
Se il problema persiste, vai alla sezione successiva.
Informazioni di diagnostica da raccogliere
Se il problema persiste dopo aver seguito le istruzioni precedenti, raccogli le seguenti informazioni di diagnostica e condividile con l'assistenza di Apigee Edge:
- Log di Qpidd:
/opt/apigee/var/log/apigee-qpidd/qpidd.log(Edge for Private Cloud 4.53.00 e versioni successive) e/opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log - Log di PostgreSQL:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log - Log di edge-qpid-server:
/opt/apigee/var/log/edge-qpid-server/logs/system.log - Log di edge-postgres-server:
/opt/apigee/var/log/edge-postgres-server/logs/system.log Statistiche della coda Qpidd:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
Gruppo di analisi restituito dal seguente comando curl:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax