Vous consultez la documentation Apigee Edge.
Accédez à la documentation Apigee X.
Problème constaté
Les données d'analyse sont manquantes dans l'interface utilisateur Edge, car le serveur Qpidd ne transfère pas les messages d'analyse vers PostgreSQL. Dans Edge, le composant edge-qpid-server correspond au serveur Qpidd.
Qpidd gère deux files d'attente pour chaque groupe d'analyse :
ax-q-axgroup001-consumer-group-001
Cette file d'attente contient les messages d'analyse envoyés par les processeurs et les routeurs de messages. Les messages sont extraits de cet emplacement par
edge-qpid-server, qui les analyse et les insère dans PostgreSQL. Une fois les messages traités, ils sont supprimés de la file d'attente.ax-q-axgroup001-consumer-group-001-dl
Cette file d'attente est la file d'attente de lettres mortes. Il sert de destination aux messages que
edge-qpid-servern'a pas pu traiter et qu'il ne souhaite donc plus recevoir. Cette valeur est généralement renseignée lorsque le nombre maximal de tentatives de distribution est dépassé ou si PostgreSQL a refusé l'insertion de nouvelles données en raison d'erreurs d'exécution.
Message d'erreur
La cause première peut être due à diverses erreurs d'exécution du composant edge-qpid-server. En règle générale, si edge-qpid-server reçoit une erreur d'exécution de PostgreSQL, il crée la file d'attente des messages non distribués si elle n'existe pas déjà, puis y envoie le message suivant :
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.
Causes possibles :
| Cause | Description | Instructions de dépannage applicables |
|---|---|---|
| Messages bloqués dans la file d'attente de lettres mortes de qpidd | edge-qpid-server n'a pas pu comprendre les messages qu'il a lus à partir du courtier Qpidd ou n'a pas pu conserver les messages dans PostgreSQL.
|
Utilisateurs Edge Private Cloud |
Étapes de diagnostic courantes
Exécutez la commande suivante pour afficher les statistiques de la file d'attente Qpidd :
qpid-stat -q
Le résultat renvoie l'ensemble des files d'attente enregistrées auprès du courtier. Si la file d'attente dont le nom se termine par "-dl" contient des messages, cela signifie que des messages sont bloqués dans la file d'attente de lettres mortes.
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
Cause : messages bloqués dans la file d'attente de lettres mortes de qpidd
Diagnostic
Cette situation peut se produire dans les scénarios suivants :
- Une mise à niveau a eu lieu dans le passé, pendant laquelle PostgreSQL était hors service.
- Une indisponibilité temporaire de PostgreSQL en raison de problèmes réseau.
edge-qpid-servera tenté d'envoyer un message à PostgreSQL, mais PostgreSQL a renvoyé une erreur d'exécution.
Solution
Notez le nom des files d'attente dans les étapes de diagnostic courantes. Exemple :
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
Exécutez la commande
qpid-toolpour saisir une inviteqpidinteractive :qpid-tool
Cette commande renvoie les éléments suivants :
Management Tool for QPID qpid:
Exécutez
list brokerpour obtenir la liste des courtiers actifs :list broker
Cette commande renvoie les éléments suivants :
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
Où la colonne
IDspécifie l'ID du courtier.Notez l'ID du courtier. Dans l'exemple, il s'agit de 125.
Exécutez la commande suivante pour déplacer les messages de la file d'attente des messages non distribués vers la file d'attente réelle :
call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}Cette commande renvoie les éléments suivants :
OK (0) - {}Si aucun résultat n'est généré, cela signifie qu'il n'y avait rien à faire, c'est-à-dire aucun message à déplacer. Si
OK(0)ne s'affiche pas, contactez l'assistance Apigee Edge.Quittez le terminal qpid-tool.
quit
Patientez cinq minutes, puis exécutez à nouveau les étapes de diagnostic décrites dans Étapes de diagnostic courantes. Vérifiez que les messages de la file d'attente réelle sont traités et assurez-vous que le nombre de messages de la file d'attente de messages non distribués reste à 0.
Si le problème persiste, passez à la section suivante.
Vous devez collecter des informations de diagnostic
Si le problème persiste, même après avoir suivi les instructions ci-dessus, veuillez rassembler les informations de diagnostic suivantes. Contactez l'assistance Apigee Edge et partagez les informations suivantes :
- Journaux Qpidd :
/opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log - Journaux PostgreSQL :
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log - Journaux du serveur Edge-qpid :
/opt/apigee/var/log/edge-qpid-server/logs/system.log - Journaux du serveur Edge-postgres :
/opt/apigee/var/log/edge-postgres-server/logs/system.log Statistiques de la file d'attente Qpidd :
qpid-stat -q
Groupe Analytics renvoyé par la commande curl suivante :
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax