Dane Analytics utknęły w kolejce niedostarczonych wiadomości w Qpidd

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Krótki opis problemu

W interfejsie Edge UI brakuje danych Analytics, ponieważ serwer Qpidd nie przesyła wiadomości Analytics do PostgreSQL. W przypadku Edge komponent edge-qpid-server odpowiada serwerowi Qpidd.

Qpidd utrzymuje 2 kolejki dla każdej grupy analitycznej:

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

    Ta kolejka zawiera wiadomości analityczne przesyłane z procesorów i routerów wiadomości. Wiadomości są stąd pobierane przez edge-qpid-server, które je analizuje i wstawia do PostgreSQL. Po przetworzeniu wiadomości są one usuwane z kolejki.

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

    Ta kolejka to kolejka niedostarczonych wiadomości. Jest to miejsce docelowe wiadomości, których edge-qpid-server nie udało się przetworzyć i których nie chcesz już otrzymywać. Zwykle jest on wypełniany, gdy zostanie przekroczona maksymalna liczba dostaw lub gdy PostgreSQL odrzuci wstawienie nowych danych z powodu błędów środowiska wykonawczego.

Komunikat o błędzie

Przyczyną może być różne błędy środowiska wykonawczego z komponentu edge-qpid-server. Zwykle, jeśli edge-qpid-server otrzyma błąd wykonania z PostgreSQL, tworzy kolejkę niedostarczonych wiadomości (jeśli jeszcze nie istnieje), a następnie wysyła do niej ten komunikat:

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.

Możliwe przyczyny

Przyczyna Opis Instrukcje rozwiązywania problemów dotyczące
Wiadomości utknęły w kolejce niedostarczonych wiadomości qpidd edge-qpid-server nie może odczytać wiadomości z brokera Qpidd lub nie może zapisać wiadomości w PostgreSQL. Użytkownicy Edge Private Cloud

Typowe etapy diagnostyki

Aby wyświetlić statystyki kolejki Qpidd, uruchom to polecenie:

qpid-stat -q

Dane wyjściowe zwracają zestaw kolejek zarejestrowanych w brokerze. Jeśli w kolejce o nazwie kończącej się na „-dl” znajdują się wiadomości, oznacza to, że są one zablokowane w kolejce wiadomości niedostarczonych.

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

Przyczyna: wiadomości utknęły w kolejce niedostarczonych komunikatów qpidd

Diagnostyka

Może się tak zdarzyć w tych sytuacjach:

  1. W przeszłości przeprowadzono uaktualnienie, podczas którego PostgreSQL był niedostępny.
  2. tymczasowa awaria PostgreSQL z powodu problemów z siecią;
  3. edge-qpid-server próbował wysłać wiadomość do PostgreSQL, ale PostgreSQL zwrócił błąd środowiska wykonawczego.

Rozdzielczość

  1. Zapisz nazwy kolejek z sekcji Typowe kroki diagnostyczne. Na przykład:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. Uruchom polecenie qpid-tool, aby wyświetlić interaktywny wiersz poleceń qpid:

    qpid-tool

    To polecenie zwraca te informacje:

    Management Tool for QPID
    qpid:
  3. Uruchom polecenie list broker, aby uzyskać listę aktywnych brokerów:

    list broker

    To polecenie zwraca te informacje:

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

    Kolumna ID określa identyfikator brokera.

  4. Zapisz identyfikator brokera. W tym przykładzie jest to 125.

  5. Aby przenieść wiadomości z kolejki wiadomości niedostarczonych z powrotem do kolejki rzeczywistej, uruchom to polecenie:

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

    To polecenie zwraca te informacje:

    OK (0) - {}

    Jeśli nie ma żadnych danych wyjściowych, oznacza to, że nie było nic do zrobienia, czyli nie było wiadomości do przeniesienia. Jeśli nie widzisz ikony OK(0), skontaktuj się z zespołem pomocy Apigee Edge.

  6. Zamknij terminal qpid-tool.

    quit
  7. Poczekaj 5 minut, a potem ponownie wykonaj czynności diagnostyczne opisane w sekcji Typowe czynności diagnostyczne. Sprawdź, czy wiadomości w rzeczywistej kolejce są przetwarzane, i upewnij się, że liczba wiadomości w kolejce niedostarczonych pozostaje na poziomie 0.

Jeśli problem nadal występuje, przejdź do następnej sekcji.

Must Gather Diagnostic Information

Jeśli problem nadal występuje po wykonaniu powyższych instrukcji, zbierz te informacje diagnostyczne. Skontaktuj się z zespołem pomocy Apigee Edge i udostępnij mu te informacje:

  • Dzienniki Qpidd: /opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
  • Logi PostgreSQL: /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
  • Dzienniki serwera Edge-qpid: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • Dzienniki serwera Edge-postgres:/opt/apigee/var/log/edge-postgres-server/logs/system.log
  • Statystyki kolejki Qpidd:

    qpid-stat -q
  • Grupa Analytics zwrócona przez to polecenie curl:

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