Dati di analisi bloccati nella coda dei messaggi non recapitabili Qpidd

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Sintomo

I dati di analisi non sono presenti nella UI perimetrale perché il server Qpidd non trasferisce i messaggi di analisi in PostgreSQL. In Edge, il componente edge-qpid-server corrisponde al server Qpidd.

Qpidd mantiene due code per ogni gruppo di analisi:

  • ax-q-axgroup001-consumer-group-001

    Questa coda contiene i messaggi di analisi inviati dai processori e router dei messaggi. 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 è la coda messaggi non recapitabili. Funge da destinazione per i messaggi che edge-qpid-server non è riuscito a elaborare e che pertanto non vuole più ricevere. In genere, questo campo viene compilato quando viene superato il numero massimo di 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 messaggi non recapitabili se non esiste già e invia lì 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 in una coda di messaggi non recapitabili di qpidd edge-qpid-server non è riuscito a comprendere i messaggi letti dal broker Qpidd o non è stato in grado di rendere persistenti i messaggi in PostgreSQL. Utenti Edge Private Cloud

Passaggi diagnostici comuni

Esegui questo comando per visualizzare le statistiche della coda Qpidd:

qpid-stat -q

L'output restituisce l'insieme di code registrate con il broker. Se la coda il cui nome termina con "-dl" ha messaggi compilati, quindi ci sono messaggi bloccati nella coda messaggi non recapitabili.

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:

  1. In passato era stato eseguito un upgrade, durante il quale PostgreSQL non era attivo.
  2. Un'interruzione temporanea di PostgreSQL dovuta a problemi di rete.
  3. edge-qpid-server ha tentato di inviare un messaggio a PostgreSQL, ma PostgreSQL ha restituito un errore di runtime.

Risoluzione

  1. Prendi nota del nome delle code nei Passaggi di diagnostica comuni. Ad esempio:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. Esegui il comando qpid-tool per inserire un prompt qpid interattivo:

    qpid-tool

    Questo comamnd restituisce quanto segue:

    Management Tool for QPID
    qpid:
  3. Esegui list broker per ottenere un elenco dei broker attivi:

    list broker

    Questo comamnd restituisce quanto segue:

    Object Summary:
    ID   Created   Destroyed  Index
    =======================================
    125  21:00:00  -          amqp-broker

    Dove la colonna ID specifica l'ID del broker.

  4. Prendi nota dell'ID del broker. Nell'esempio è 125.

  5. Esegui questo comando per spostare i messaggi dalla coda dei 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 comamnd restituisce quanto segue:

    OK (0) - {}

    Se non viene restituito alcun output, non occorre fare nulla, quindi non è possibile spostare messaggi. Se non vedi OK(0), dovresti contattare l'assistenza Apigee Edge.

  6. Esci dal terminale qpid-tool.

    quit
  7. Attendi 5 minuti ed esegui nuovamente i passaggi di diagnostica descritti in Passaggi di diagnostica comuni. Verifica che i messaggi nella coda effettiva vengano elaborati e assicurati che il numero di messaggi non recapitabili rimanga pari a 0.

Se il problema persiste, vai alla sezione successiva.

Raccogliere informazioni diagnostiche

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni diagnostiche. Contatta e condividili con l'assistenza Apigee Edge:

  • Log Qpidd: /opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
  • Log Postgresql: /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
  • Log Edge-qpid-server: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • Log Edge-postgres-server:/opt/apigee/var/log/edge-postgres-server/logs/system.log
  • Statistiche coda Qpidd:

    qpid-stat -q
  • Gruppo di analisi restituito dal seguente comando curl:

    curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax