Analytics-Daten bleiben in der Qpidd-Warteschlange für unzustellbare Nachrichten hängen

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Symptom

In der Edge-Benutzeroberfläche fehlen Analysedaten, da der Qpidd-Server Analysenachrichten nicht an PostgreSQL überträgt. In Edge entspricht die edge-qpid-server-Komponente dem Qpidd-Server.

Qpidd unterhält zwei Warteschlangen für jede Analysegruppe:

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

    Diese Warteschlange enthält Analysenachrichten, die von den Message Processors und Routern gesendet wurden. Nachrichten werden hier vom edge-qpid-server abgerufen, das Nachrichten parst und in PostgreSQL einfügt. Nach erfolgreicher Verarbeitung der Nachrichten werden sie aus der Warteschlange entfernt.

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

    Diese Warteschlange ist die Warteschlange für unzustellbare Nachrichten. Sie dient als Ziel für Nachrichten, die edge-qpid-server nicht verarbeiten konnte und daher nicht mehr empfangen möchte. Dieses Feld wird normalerweise ausgefüllt, wenn die maximale Übermittlungsanzahl überschritten wird oder wenn PostgreSQL das Einfügen neuer Daten aufgrund von Laufzeitfehlern abgelehnt hat.

Fehlermeldung

Die Ursache kann an verschiedenen Laufzeitfehlern der Komponente „edge-qpid-server“ liegen. Wenn edge-qpid-server in der Regel einen Laufzeitfehler von PostgreSQL empfängt, wird die Dead-Letter-Warteschlange erstellt, falls noch nicht vorhanden, und dann die folgende Nachricht an diese Adresse gesendet:

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.

Mögliche Ursachen

Ursache Beschreibung Anleitungen zur Fehlerbehebung für
Nachrichten in der Warteschlange für unzustellbare Nachrichten von qpidd edge-qpid-server konnte Nachrichten, die aus Qpidd Broker gelesen wurden, nicht interpretieren oder Nachrichten in PostgreSQL speichern. Edge Private Cloud-Nutzer

Allgemeine Diagnoseschritte

Führen Sie den folgenden Befehl aus, um die Statistiken der Qpidd-Warteschlange anzusehen:

qpid-stat -q

Die Ausgabe gibt die beim Broker registrierten Warteschlangen zurück. Wenn die Warteschlange mit dem Namen auf „-dl“ endet enthält, sind Nachrichten in der Warteschlange für unzustellbare Nachrichten festhängen.

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

Ursache: Nachrichten hängen in der Warteschlange für unzustellbare Nachrichten von qpidd fest.

Diagnose

Diese Bedingung kann in folgenden Fällen eintreten:

  1. In der Vergangenheit war ein Upgrade durchgeführt worden, als PostgreSQL ausfiel.
  2. Ein vorübergehender Ausfall von PostgreSQL aufgrund von Netzwerkproblemen.
  3. edge-qpid-server hat versucht, eine Nachricht an PostgreSQL zu senden, aber PostgreSQL hat einen Laufzeitfehler zurückgegeben.

Auflösung

  1. Notieren Sie sich den Namen der Warteschlangen aus den häufigen Diagnoseschritten. Beispiel:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. Führen Sie den Befehl qpid-tool aus, um eine interaktive qpid-Eingabeaufforderung aufzurufen:

    qpid-tool

    Dieser Kommando gibt Folgendes zurück:

    Management Tool for QPID
    qpid:
  3. Führen Sie list broker aus, um eine Liste der aktiven Broker abzurufen:

    list broker

    Dieser Kommando gibt Folgendes zurück:

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

    Die Spalte ID gibt dabei die ID des Brokers an.

  4. Notieren Sie sich die ID des Zwischenhändlers. Im Beispiel ist das 125.

  5. Führen Sie den folgenden Befehl aus, um die Nachrichten aus der Dead-Letter-Warteschlange zurück in die eigentliche Warteschlange zu verschieben:

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

    Dieser Kommando gibt Folgendes zurück:

    OK (0) - {}

    Wenn keine Ausgabe vorhanden ist, muss nichts unternommen werden, um zu erfassen, dass keine Nachrichten verschoben werden müssen. Wenn OK(0) nicht angezeigt wird, wenden Sie sich an den Apigee Edge-Support.

  6. Beenden Sie das Terminal "qpid-tool".

    quit
  7. Warten Sie fünf Minuten und führen Sie die Diagnoseschritte unter Allgemeine Diagnoseschritte noch einmal aus. Überprüfen Sie, ob die Nachrichten in der eigentlichen Warteschlange verarbeitet werden, und achten Sie darauf, dass die Anzahl der unzustellbaren Nachrichten auf 0 bleibt.

Wenn das Problem weiterhin besteht, fahren Sie mit dem nächsten Abschnitt fort.

Erfassen von Diagnoseinformationen erforderlich

Wenn das Problem trotz Befolgen der obigen Anweisungen weiterhin besteht, holen Sie die folgenden Diagnoseinformationen zusammen. Teilen Sie sie dem Apigee Edge-Support mit:

  • Qpidd-Logs: /opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
  • Postgresql-Logs: /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
  • Edge-qpid-Server-Logs: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • Edge-postgres-server-Logs:/opt/apigee/var/log/edge-postgres-server/logs/system.log
  • QPIDD-Warteschlangenstatistiken:

    qpid-stat -q
  • Vom folgenden curl-Befehl zurückgegebene Analytics-Gruppe:

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