Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację
Apigee X. info
Krótki opis problemu
W nowym interfejsie Edge brakuje danych Analytics, ponieważ serwer Qpidd nie przesyła wiadomości Analytics do PostgreSQL. W Edge komponent edge-qpid-server odpowiada serwerowi Qpidd.
Qpidd utrzymuje 2 kolejki dla każdej grupy Analytics:
ax-q-axgroup001-consumer-group-001
Ta kolejka zawiera wiadomości analityczne wysyłane z procesorów komunikatów i routerów. Wiadomości są stąd pobierane przez
edge-qpid-server, który je analizuje i wstawia do PostgreSQL. Po pomyślnym przetworzeniu wiadomości są usuwane z kolejki.ax-q-axgroup001-consumer-group-001-dl
Ta kolejka to kolejka niedostarczonych wiadomości. Służy jako miejsce docelowe dla wiadomości, których nie udało się przetworzyć w
edge-qpid-serveri których nie chce on już otrzymywać. Zwykle jest ona wypełniana, gdy zostanie przekroczona maksymalna liczba dostaw lub gdy PostgreSQL odrzuci wstawienie nowych danych z powodu błędów środowiska wykonawczego.
Komunikat o błędzie
Główną przyczyną mogą być różne błędy środowiska wykonawczego komponentu edge-qpid-server. Zwykle, jeśli edge-qpid-server otrzyma błąd środowiska wykonawczego 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, których dotyczy problem |
|---|---|---|
| Wiadomości utknęły w kolejce niedostarczonych wiadomości qpidd | edge-qpid-server nie mógł zrozumieć wiadomości odczytanych z brokera Qpidd lub nie mógł zapisać wiadomości w PostgreSQL.
|
Użytkownicy Edge Private Cloud |
Typowe czynności diagnostyczne
Aby wyświetlić statystyki kolejki Qpidd, uruchom to polecenie w węźle Qpid:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
Dane wyjściowe zawierają zestaw kolejek zarejestrowanych u brokera. Jeśli kolejka o nazwie kończącej się na -dl zawiera wiadomości (Q-Depth(Messages) w Edge dla chmury prywatnej w wersji 4.53.00 i nowszych lub msg w Edge dla chmury prywatnej w wersji 4.52.x i starszych), oznacza to, że wiadomości utknęły w kolejce niedostarczonych wiadomości.
Przykładowe dane wyjściowe w Edge dla chmury prywatnej w wersji 4.53.00 i nowszych (w tym 4.54.00, Apache Qpid Broker-J):
+---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | Queue Name | Messages Enqueued | Total Enqueued(B) | Messages Dequeued | Total Dequeued(B) | Consumers | Bindings | Q-Depth(Messages) | Q-Depth(B) | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | ax-q-axgroup001-consumer-group-001 | 185 | 13800000 | 185 | 13800000 | 6 | 1 | 0 | 0 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | ax-q-axgroup001-consumer-group-001-dl | 70 | 3900000 | 0 | 0 | 0 | 1 | 70 | 3900000 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+
Przykładowe dane wyjściowe w Edge dla chmury prywatnej w wersji 4.52.x i starszych (starszy broker C++
qpidd):
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 wiadomości qpidd
Diagnostyka
Ta sytuacja może wystąpić w tych przypadkach:
- W przeszłości przeprowadzono uaktualnienie, podczas którego PostgreSQL był niedostępny.
- Tymczasowa awaria PostgreSQL z powodu problemów z siecią.
- Komponent
edge-qpid-serverpróbował wysłać wiadomość do PostgreSQL, ale PostgreSQL zwrócił błąd środowiska wykonawczego.
Rozdzielczość
Aby przenieść utknięte wiadomości z kolejki niedostarczonych wiadomości z powrotem do głównej kolejki Analytics, wykonaj czynności odpowiednie dla Twojej wersji Edge dla chmury prywatnej.
Edge dla chmury prywatnej w wersji 4.53.00 i nowszych (w tym 4.54.00)
Edge dla chmury prywatnej w wersji 4.53.00 i nowszych (w tym 4.54.00) używa Apache Qpid Broker-J (10.0.1 w wersji 4.54.00 i 8.0.6 w wersji 4.53.x). W Edge dla chmury prywatnej w wersji 4.53.00 i nowszych usunięto starszy interfejs CLI qpid-tool, którego nie można już używać.
Zamiast tego użyj interfejsu Apache Qpid Broker-J HTTP Management REST API (moveMessages) lub konsoli Qpid Web Management Console, aby przenieść wiadomości z kolejki niedostarczonych wiadomości z powrotem do głównej kolejki Analytics:
Zapisz dokładne nazwy kolejki głównej i kolejki niedostarczonych wiadomości z danych wyjściowych Typowych czynności diagnostycznych (np.
ax-q-axgroup001-consumer-group-001iax-q-axgroup001-consumer-group-001-dllubax-q-axgroup-001-consumer-group-001iax-q-axgroup-001-consumer-group-001-dl).W węźle Qpid uruchom to polecenie
curl, aby wywołać operacjęmoveMessagesw kolejce niedostarczonych wiadomości za pomocą interfejsu Qpid Broker-J HTTP Management API (domyślnie port8090):curl -u QPID_USER:QPID_PASSWORD -X POST \ -H "Content-Type: application/json" \ -d '{"destination": "ax-q-axgroup001-consumer-group-001"}' \ http://127.0.0.1:8090/api/latest/queue/default/default/ax-q-axgroup001-consumer-group-001-dl/moveMessagesGdzie:
QPID_USERiQPID_PASSWORDto dane logowania do zarządzania Qpid skonfigurowane w pliku/opt/apigee/customer/application/qpidd.propertieslub/opt/apigee/token/application/qpidd.properties(domyślnieguest:guest).- Jeśli nazwy kolejek Analytics w
qpid-stat -qsię różnią, zastąpax-q-axgroup001-consumer-group-001iax-q-axgroup001-consumer-group-001-dl. - Aby przenosić wiadomości w partiach, dodaj parametr
"limit"do treści żądania JSON (np."limit": 100000). - Jeśli w interfejsie Qpid Management API jest włączony protokół SSL/TLS (
conf_qpidd_qpid_management.https.enabled=true), użyjhttps://i przekaż--cacert(lub-k) docurl.
Sprawdź dane wyjściowe polecenia. Pomyślne wywołanie zwraca tablicę JSON przeniesionych wewnętrznych identyfikatorów wiadomości:
[ 3, 4, 5 ]
Jeśli zwrócona tablica jest pusta (
[]), oznacza to, że w kolejce niedostarczonych wiadomości nie ma wiadomości do przeniesienia.Zaczekaj 5 minut, a potem uruchom
/opt/apigee/apigee-qpidd/bin/qpid-stat -qz Typowych czynności diagnostycznych. Sprawdź, czy wiadomości w kolejce głównej (ax-q-axgroup001-consumer-group-001) są przetwarzane i czyQ-Depth(Messages)w kolejce niedostarczonych wiadomości (ax-q-axgroup001-consumer-group-001-dl) pozostaje na poziomie0.
Edge dla chmury prywatnej w wersji 4.52.x i starszych
Zapisz nazwy kolejek z Typowych czynności diagnostycznych. Na przykład:
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
Uruchom polecenie
qpid-tool, aby otworzyć interaktywny wiersz poleceńqpid:qpid-tool
To polecenie zwraca te dane:
Management Tool for QPID qpid:
Uruchom
list broker, aby uzyskać listę aktywnych brokerów:list broker
To polecenie zwraca te dane:
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
Kolumna
IDokreśla identyfikator brokera.Zapisz identyfikator brokera. W tym przykładzie jest to
125.Aby przenieść wiadomości z kolejki niedostarczonych wiadomości z powrotem do kolejki głównej, 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 dane:
OK (0) - {}Jeśli nie ma danych wyjściowych, oznacza to, że nie ma nic do zrobienia, czyli nie ma wiadomości do przeniesienia. Jeśli nie widzisz
OK (0), skontaktuj się z zespołem pomocy Apigee Edge.Zamknij terminal
qpid-tool:quit
Zaczekaj 5 minut, a potem ponownie wykonaj czynności diagnostyczne z Typowych czynności diagnostycznych. Sprawdź, czy wiadomości w kolejce głównej są przetwarzane, i upewnij się, że liczba
msgw kolejce niedostarczonych wiadomości pozostaje na poziomie0.
Jeśli problem nadal występuje, przejdź do następnej sekcji.
Informacje diagnostyczne, które należy zebrać
Jeśli problem nadal występuje po wykonaniu powyższych instrukcji, zbierz te informacje diagnostyczne i udostępnij je zespołowi pomocy Apigee Edge:
- Logi Qpidd:
/opt/apigee/var/log/apigee-qpidd/qpidd.log(Edge dla chmury prywatnej w wersji 4.53.00 i nowszych) oraz/opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log - Logi PostgreSQL:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log - Logi edge-qpid-server:
/opt/apigee/var/log/edge-qpid-server/logs/system.log - Logi edge-postgres-server:
/opt/apigee/var/log/edge-postgres-server/logs/system.log Statystyki kolejki Qpidd:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
Grupa Analytics zwrócona przez to polecenie curl:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax