Données d'analyse bloquées dans la file d'attente de lettres mortes Qpidd

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Symptôme

Les données d'analyse sont manquantes dans l'interface utilisateur Edge parce que 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 à partir des processeurs et routeurs de messages. C'est ici que les messages sont extraits par edge-qpid-server, qui les analyse et les insère dans PostgreSQL. Une fois traités correctement, les messages sont supprimés de la file d'attente.

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

    Il s'agit de la file d'attente de lettres mortes. Il sert de destination aux messages que edge-qpid-server n'a pas réussi à traiter et ne souhaite donc plus recevoir. Ce champ est généralement renseigné lorsque le nombre maximal de livraisons 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 du problème 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 de lettres mortes 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 aux
Messages bloqués dans la file d'attente de lettres mortes de qpidd edge-qpid-server n'a pas compris les messages lus par l'agent Qpidd ou n'a pas pu conserver les messages dans PostgreSQL. Utilisateurs du cloud privé Edge

É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 de l'agent. Si la file d'attente dont le nom se termine par "-dl" contient des messages, cela signifie qu'il y a des messages 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 cas suivants:

  1. Une mise à niveau avait déjà eu lieu, période pendant laquelle PostgreSQL était indisponible.
  2. Une indisponibilité temporaire de PostgreSQL due à des problèmes de réseau.
  3. Le edge-qpid-server a tenté d'envoyer un message à PostgreSQL, mais PostgreSQL a renvoyé une erreur d'exécution.

Solution

  1. Notez le nom des files d'attente sur la page Étapes courantes du diagnostic. Exemple :

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. Exécutez la commande qpid-tool pour saisir une invite qpid interactive:

    qpid-tool

    Cette virgule renvoie le code suivant:

    Management Tool for QPID
    qpid:
  3. Exécutez list broker pour obtenir la liste des courtiers actifs:

    list broker

    Cette virgule renvoie le code suivant:

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

    où la colonne ID indique l'ID de l'agent.

  4. Notez l'ID de l'agent. Dans cet exemple, il s'agit de 125.

  5. Exécutez la commande suivante pour replacer les messages de la file d'attente de lettres mortes dans 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 virgule renvoie le code suivant:

    OK (0) - {}

    Si aucun résultat ne s'affiche, cela signifie qu'il n'y a rien à faire (aucun message à déplacer). Si vous ne voyez pas OK(0), contactez l'assistance Apigee Edge.

  6. Quittez le terminal qpid-tool.

    quit
  7. Patientez cinq minutes, puis exécutez de nouveau les étapes de diagnostic à partir de la page Étapes courantes du diagnostic. Vérifiez que les messages de la file d'attente réelle sont en cours de traitement et assurez-vous que le nombre de messages de lettres mortes reste à 0.

Si le problème persiste, passez à la section suivante.

Vous devez collecter des informations de diagnostic

Si le problème persiste alors que vous avez suivi les instructions ci-dessus, veuillez rassembler les informations de diagnostic suivantes. Contactez-les et partagez-les avec l'assistance Apigee Edge:

  • Journaux Qpidd: /opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
  • Journaux Postgresql: /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
  • Journaux Edge-qpid-server: /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 d'analyse renvoyé par la commande curl suivante:

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