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

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

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 à partir des routeurs et processeurs de messages. Les messages sont extraits d'ici par le edge-qpid-server, qui analyse les messages et les insère dans PostgreSQL. Une fois traités, les messages 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 pour les messages que edge-qpid-server n'a pas réussi à traiter et qu'il ne souhaite donc plus recevoir. Ce champ est généralement renseigné lorsque le nombre maximal de diffusions 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 à différentes 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 à
Messages bloqués dans la file d'attente de lettres mortes de qpidd edge-qpid-server n'a pas pu interpréter les messages lus depuis le courtier Qpidd ou n'a pas pu conserver les messages adressés à PostgreSQL. Utilisateurs de cloud privé périphérique

Étapes de diagnostic courantes

Exécutez la commande suivante pour afficher les statistiques de la file d'attente Qpidd:

qpid-stat -q

La sortie renvoie l'ensemble des files d'attente enregistrées auprès de l'agent. Si des messages se terminent dans la file d'attente dont le nom se termine par "-dl", 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 cas suivants:

  1. Une mise à niveau avait eu lieu par le passé, au cours de laquelle PostgreSQL était hors service.
  2. Interruption temporaire de PostgreSQL en raison de problèmes de réseau.
  3. edge-qpid-server a tenté d'envoyer un message à PostgreSQL, mais PostgreSQL a renvoyé une erreur d'exécution.

Résolution

  1. Notez le nom des files d'attente à partir de la page Procédure de diagnostic commune. 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 commande renvoie ce qui suit:

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

    list broker

    Cette commande renvoie ce qui suit:

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

    Où la colonne ID spécifie l'ID de l'agent.

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

  5. Exécutez la commande suivante pour déplacer les messages de la file d'attente des lettres mortes vers la file d'attente:

    call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}

    Cette commande renvoie ce qui suit:

    OK (0) - {}

    S'il n'y a pas de sortie, cela signifie qu'il n'y a rien à faire, ce qui signifie qu'il n'y a 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 à nouveau les étapes du diagnostic depuis les Étapes de diagnostic courantes. Vérifiez que les messages de la file d'attente sont traités et que le nombre de messages de lettres mortes reste à 0.

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

Doit recueillir 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-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 Edge-postgres-server:/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