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

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Symptom

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

Qpidd verwaltet zwei Warteschlangen für jede Analysegruppe:

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

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

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

    Diese Warteschlange ist die Warteschlange für unzustellbare Nachrichten. Er 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 Anzahl der Übermittlungen überschritten wird oder wenn PostgreSQL das Einfügen neuer Daten aufgrund von Laufzeitfehlern abgelehnt hat.

Fehlermeldung

Die Ursache könnten verschiedene Laufzeitfehler der edge-qpid-server-Komponente sein. Wenn edge-qpid-server einen Laufzeitfehler von PostgreSQL empfängt, wird normalerweise die Warteschlange für unzustellbare Nachrichten erstellt, sofern sie noch nicht vorhanden ist, und dann die folgende Nachricht dorthin 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 Geltende Anleitungen zur Fehlerbehebung
Nachrichten in der Warteschlange für unzustellbare Nachrichten von QPIDD edge-qpid-server konnte Nachrichten, die aus Qpidd Broker gelesen wurden, nicht verstehen oder Nachrichten nicht in PostgreSQL speichern. Edge Private Cloud-Nutzer

Häufige Diagnoseschritte

Führen Sie den folgenden Befehl aus, um Qpidd-Warteschlangenstatistiken anzuzeigen:

qpid-stat -q

Die Ausgabe gibt die Warteschlangen zurück, die beim Broker registriert sind. Wenn in der Warteschlange mit dem Namen, der auf „-dl“ endet, Nachrichten gefüllt sind, verbleiben Nachrichten in der Warteschlange für unzustellbare Nachrichten.

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 verbleiben in der Warteschlange für unzustellbare Nachrichten von QPIdd

Diagnose

Diese Bedingung kann in den folgenden Szenarien eintreten:

  1. In der Vergangenheit gab es ein Upgrade. In dieser Zeit war PostgreSQL nicht verfügbar.
  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 die Namen der Warteschlangen aus den Common Diagnose Steps (Allgemeine Diagnoseschritte). 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 einzugeben:

    qpid-tool

    Dieser Befehl 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 Befehl gibt Folgendes zurück:

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

    Dabei gibt die Spalte ID die ID des Zwischenhändlers an.

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

  5. Führen Sie den folgenden Befehl aus, um die Nachrichten aus der Warteschlange für unzustellbare Nachrichten 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 Befehl gibt Folgendes zurück:

    OK (0) - {}

    Wenn keine Ausgabe vorhanden ist, gab es nichts zu tun, d. h. es wurden keine Nachrichten verschoben. Wenn OK(0) nicht angezeigt wird, wenden Sie sich an den Apigee Edge-Support.

  6. Beenden Sie das qpid-tool-Terminal.

    quit
  7. Warten Sie fünf Minuten und führen Sie die Diagnoseschritte dann unter Allgemeine Diagnoseschritte noch einmal aus. Stellen Sie sicher, dass die Nachrichten in der eigentlichen Warteschlange verarbeitet werden, und stellen Sie sicher, dass die Anzahl der unzustellbaren Nachrichten bei 0 bleibt.

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

Diagnoseinformationen müssen erfasst werden

Wenn das Problem trotz Befolgen der obigen Anweisungen weiterhin besteht, stellen Sie die folgenden Diagnoseinformationen zusammen. Kontaktieren Sie sie und geben Sie sie für den Apigee Edge-Support frei:

  • 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
  • Von folgendem curl-Befehl zurückgegebene Analysegruppe:

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