Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Filmy
Więcej informacji o błędach 503 znajdziesz w filmach:
Wideo | Opis |
---|---|
Rozwiązywanie problemów z brakiem dostępu do usługi 503 z powodu problemu z DNS | Dowiedz się więcej o tych kwestiach:
|
Rozwiązywanie problemu z brakiem dostępu do usługi 503 z powodu problemu z siecią | Rozwiązywanie problemów z niedostępnymi usługami 503 w czasie rzeczywistym spowodowanym przez problem z siecią w Apigee Edge |
Krótki opis problemu
Aplikacja kliencka otrzymuje stan odpowiedzi HTTP 503 z komunikatem Usługa niedostępna. po wywołaniu serwera proxy interfejsu API.
Komunikaty o błędach
Wyświetli się ten komunikat o błędzie:
HTTP/1.1 503 Service Unavailable
W odpowiedzi HTTP możesz też zobaczyć ten komunikat o błędzie:
Usługa niedostępna
{ "fault": { "faultstring": "The Service is temporarily unavailable", "detail": { "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable" } } }
Możliwe przyczyny
Odpowiedź HTTP 503 Service Unavailable (Usługa niedostępna) z kodem błędu messaging.adaptors.http.flow.ServiceUnavailable
występuje, jeśli w procesorze wiadomości Apigee Edge wystąpią błędy z powodu przekroczenia limitu czasu połączenia, nieprawidłowe
nazwa hosta lub błędy uzgadniania połączenia SSL podczas komunikacji z serwerem backendu.
Możliwe przyczyny odpowiedzi 503 Service Unavailable (Usługa niedostępna) to:
Przyczyna | Opis | Kto może wykonywać czynności związane z rozwiązywaniem problemów |
---|---|---|
Błędy połączenia z powodu nieprawidłowego rozpoznawania nazw DNS | Rozpoznawanie nazw DNS serwera docelowego spowodowało nieprawidłowe adresy IP, które doprowadziły do błędów połączenia. | Użytkownicy Edge Private Cloud |
Błędy połączeń | Problemy z siecią lub połączeniem uniemożliwiają klientowi połączenie się z serwerem. | Użytkownicy Edge Private Cloud |
Nieprawidłowa nazwa hosta serwera docelowego | Podany host serwera docelowego jest nieprawidłowy lub zawiera niechciane znaki (np. spacja). | Użytkownicy chmury publicznej i prywatnej Edge |
Nieudane uzgadnianie połączenia SSL | Nie udało się nawiązać połączenia TLS/SSL między klientem a serwerem. (Rozwiązywanie problemów z tymi zajęciami omawiamy w osobnym temacie). | Użytkownicy chmury publicznej i prywatnej Edge |
Typowe kroki diagnostyki
Określ identyfikator wiadomości nieudanego żądania
Narzędzie śledzenia
Aby za pomocą narzędzia śledzenia określić identyfikator wiadomości nieudanego żądania:
- Jeśli problem jest nadal aktywny, włącz sesję śledzenia dla odpowiedniego interfejsu API.
- Wykonaj wywołanie interfejsu API i odtwórz problem – usługa 503 jest niedostępna z kodem błędu
messaging.adaptors.http.flow.ServiceUnavailable.
- Wybierz jedno z nieudanych żądań.
- Przejdź do fazy AX i określ identyfikator wiadomości (
X-Apigee.Message-ID
) żądania, przewijając w dół sekcję Szczegóły etapu, jak pokazano na ilustracji poniżej.
Logi dostępu NGINX
Aby określić identyfikator wiadomości nieudanego żądania przy użyciu logów dostępu NGINX:
Identyfikator komunikatu błędów 503 możesz też sprawdzić w dziennikach dostępu NGINX. Jest to szczególnie przydatne, jeśli problem wystąpił w przeszłości lub jest przejściowy i nie można przechwycić logu czasu w interfejsie. Aby określić te informacje z logów dostępu NGINX, wykonaj te czynności:
- Sprawdź logi dostępu NGINX: (
/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log
) - Wyszukaj błędy 503 dla określonego serwera proxy interfejsu API w określonym czasie (jeśli problem wystąpił w przeszłości) lub jeśli jakieś żądania nadal kończą się niepowodzeniem, wyświetlając błąd 503.
- Jeśli wystąpią błędy 503 z komunikatem X-Apigee-fault-code messages.adaptors.http.flow.ServiceUnavailable,
zanotuj identyfikator jednej lub kilku takich żądań, jak w tym przykładzie:
Przykładowy wpis z błędem 503
Błędy połączenia z powodu nieprawidłowego rozpoznawania nazw DNS
Diagnostyka
- Określ identyfikator wiadomości nieudanego żądania.
- Wyszukaj identyfikator wiadomości żądania w dzienniku procesora wiadomości (
/opt/apigee/var/log/edge-message-processor/logs/system.log
). Możesz napotkać te błędy:
Błąd onConnectTimeout oznacza, że procesor wiadomości nie mógł połączyć się z serwerem backendu przed upływem ustawionego czasu oczekiwania na połączenie (domyślnie 3 sekundy).2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[Connected:]@164162 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11 resolvedAddress=www.abc.com/22.22.22.22 2019-08-14 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
- Zanotuj adres IP znaleziony w wyniku błędu onConnectTimeout i sprawdź, czy adres IP serwera backendu jest prawidłowy. Jeśli adres IP jest prawidłowy, otwórz stronę Błędy połączenia.
- Jeśli adres IP jest nieprawidłowy, najprawdopodobniej przyczyną są problemy z rozpoznawaniem nazw DNS.
- Powtórz kroki 3 i 4 w przypadku kilku kolejnych nieudanych żądań do interfejsu API i sprawdź, czy widzisz te same lub nieprawidłowe adresy IP.
- W dzienniku procesora wiadomości (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) wyszukaj wiadomości ze słowem kluczowym DNS Refresh (Odświeżanie DNS). Sprawdzaj, czy nieprawidłowe lub nieprawidłowe adresy IP są co jakiś czas dodawane do pamięci podręcznej DNS w procesorze wiadomości.2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 INFO c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.reportDifferences() : DNS Refresh for host: apitarget-uat.schemeweb.co.uk:4436. Added 2 IPs [www.abc.com/22.22.22.22, www.abc.com/33.33.33.33] Removed 1 IPs [www.abc.com/11.11.11.11]
- Ten problem może wystąpić, jeśli występują problemy z autorytatywnymi serwerami DNS lub serwerami nazw skonfigurowanymi w
/etc/resolv.conf
.
Zwykle do rozpoznawania nazw DNS skonfigurowano co najmniej jeden autorytatywny serwer DNS. Jeśli nie ma autorytatywnych serwerów DNS, system użyje konfiguracji konfiguracji z/etc/resolv.conf
i wykona odpowiednie rozpoznawanie nazw DNS. Jeśli na przykład w/etc/resolv.conf
skonfigurowano używanie określonych serwerów nazw, te serwery będą używane do rozpoznawania nazw DNS. - Jeśli wystąpią problemy z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w zasadzie
/etc/resolv.conf
, nazwy hostów serwerów backendu zostaną zastąpione błędnymi lub nieprawidłowymi adresami IP. Błędne lub nieprawidłowe adresy IP będą zapisywane w pamięci podręcznej DNS procesora wiadomości.- Jeśli problem z autorytatywnymi serwerami DNS lub serwerami nazw określony w zasadzie
/etc/resolv.conf
jest stały, nieprawidłowe lub nieprawidłowe adresy IP pozostaną w pamięci podręcznej DNS procesora wiadomości. Jeśli nieprawidłowe adresy IP są przechowywane w pamięci podręcznej DNS procesora wiadomości, żądania wszystkich tych interfejsów API przez określony serwer backendu będą kończyć się błędem 503. - Jeśli problem z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w polu
/etc/resolv.conf
jest przejściowy, prawidłowe i nieprawidłowe adresy IP będą okresowo przechowywane w pamięci podręcznej DNS. W takim przypadku błędy 503 będą okresowo wyświetlane we wszystkich tych interfejsach API używających określonego serwera backendu.
- Jeśli problem z autorytatywnymi serwerami DNS lub serwerami nazw określony w zasadzie
- Jeśli problem z serwerami DNS jest trwały, będą występować ciągłe błędy. Jeśli problem z serwerami DNS przestaje występować, będą występować przejściowe błędy. Oznacza to, że jeśli nazwa hosta serwera backendu zostanie zamieniona na nieprawidłowe adresy IP, wystąpią błędy 503. Gdy nazwy hostów serwera backendu zostaną przekształcone w prawidłowe adresy IP, zobaczysz pomyślne odpowiedzi.
Rozdzielczość
Rozwiąż problemy z serwerami DNS, kontaktując się z administratorem systemu operacyjnego.
- Jeśli wystąpił problem z autorytatywnymi serwerami DNS lub serwerami nazw określonymi w zasadzie
/etc/resolv.conf
, rozwiąż problem z odpowiednim serwerem, aby go rozwiązać. - Jeśli wystąpił problem z konfiguracją w
/etc/resolv.conf
w systemach z procesorami wiadomości, rozwiąż ten problem.
Błędy połączeń
Gdy procesor komunikatów brzegowych Apigee próbuje połączyć się z backendem, występuje błąd połączenia serwera i występuje jeden z tych problemów:
- Procesor wiadomości nie może nawiązać połączenia przed upływem ustawionego czasu oczekiwania na połączenie. (Domyślnie: 3 sekundy)
- Serwer backendu odrzuca połączenie.
Diagnostyka
- Określ identyfikator wiadomości nieudanego żądania.
-
Wyszukaj identyfikator wiadomości żądania w dzienniku procesora wiadomości (
/opt/apigee/var/log/edge-message-processor/logs/system.log
). Możesz napotkać te błędy:-
Błąd onConnectTimeout oznacza, że procesor wiadomości nie mógł
połączyć się z serwerem backendu przed upływem ustawionego czasu oczekiwania na połączenie.
2016-06-23 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@10 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11:80 resolvedAddress=www.abc.com/11.11.11.11 2016-06-23 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
-
Błąd java.net.ConnectWyjątek: odmowa połączenia wskazuje na połączenie.
została odrzucona przez serwer backendu.
14:40:16.531 +0530 2016-06-17 09:10:16,531 org:myorg env:prod api:www.abc.com rev:1 rrt07eadn-22739-40983870-15 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to www.abc.com:11.11.11.11:443 failed with exception {} java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75] at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75] at com.apigee.nio.ClientChannel.finishConnect(ClientChannel.java:121) ~[nio-1.0.0.jar:na] at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:108) ~[nio-1.0.0.jar:na]
-
Błąd onConnectTimeout oznacza, że procesor wiadomości nie mógł
połączyć się z serwerem backendu przed upływem ustawionego czasu oczekiwania na połączenie.
- Sprawdź, czy możesz połączyć się z konkretnym serwerem backendu bezpośrednio z poziomu
Procesory wiadomości za pomocą polecenia
telnet
:- Jeśli serwer backendu ma pojedynczy adres IP, użyj tego polecenia:
telnet BackendServer-IPaddress 443
- Jeśli serwer backendu obsługuje kilka adresów IP, użyj nazwy hosta
serwer backendu w poleceniu
telnet
, jak pokazano poniżej:telnet BackendServer-HostName 443
- Jeśli serwer backendu ma pojedynczy adres IP, użyj tego polecenia:
- Jeśli możesz połączyć się z serwerem backendu, może pojawić się komunikat taki jak
Connected to backend-server
. Jeśli nie możesz połączyć się z serwerem backendu, może to być bo procesory wiadomości Adresy IP nie znajdują się na liście dozwolonych w konkretnym backendzie serwera.
Rozdzielczość
Aby to umożliwić, przyznaj dostęp do adresów IP procesora wiadomości na konkretnym serwerze backendu ruch z procesorów wiadomości brzegowych do serwera backendu. Na przykład w systemie Linux możesz użyć polecenia iptables, aby zezwolić na ruch z adresów IP procesora wiadomości; na serwerze backendu.
Jeśli problem nie ustąpi, skontaktuj się z administratorem sieci, aby ustalić i rozwiązać problem Google Cloud. Jeśli potrzebujesz dodatkowej pomocy Apigee, skontaktuj się z zespołem pomocy Apigee.
Nieprawidłowa nazwa hosta serwera docelowego
Diagnostyka
Jeśli nazwa hosta podana na serwerze docelowym jest nieprawidłowa, możesz zobaczyć odpowiedź 503 Service Unavailable (usługa niedostępna) z kodem błędu.
messaging.adaptors.http.flow.ServiceUnavailable.
Narzędzie śledzenia
Aby zdiagnozować za pomocą narzędzia śledzenia:
- Jeśli problem jest nadal aktywny, włącz sesję śledzenia dla odpowiedniego interfejsu API.
- Wykonaj wywołanie interfejsu API i odtwórz problem – usługa 503 jest niedostępna z kodem błędu
messaging.adaptors.http.flow.ServiceUnavailable.
- Wybierz jedno z nieudanych żądań.
- Przejdź przez różne fazy śledzenia i znajdź miejsca, w których wystąpił błąd.
- Wybierz FlowInfo, która zawiera błąd. W polu error.cause znajdziesz więcej informacji na temat przyczyny błędu, jak pokazano w tym przykładzie:
Przykładowe żądanie z widocznym parametrem error.cause w śledzeniu
- Jeśli zauważysz, że w pliku error.cause wyświetla się komunikat Host nieosiągalny, oznacza to, że prawdopodobna przyczyna błędu:
- Nazwa hosta określona w konfiguracji serwera docelowego lub docelowego punktu końcowego jest nieprawidłowa lub zawiera niechciane znaki specjalne albo odstępy.
Na przykład w nazwie hosta jest niechciana spację:
"demo-target.apigee.net "
- nazwa hosta zastąpiona przez zmienną target.url na serwerze proxy API za pomocą metody AssignMessage lub Zasady dotyczące JavaScript są nieprawidłowe albo zawierają spację lub inne niechciane znaki specjalne.
- Nazwa hosta określona w konfiguracji serwera docelowego lub docelowego punktu końcowego jest nieprawidłowa lub zawiera niechciane znaki specjalne albo odstępy.
- Sprawdź konfigurację docelowego punktu końcowego lub definicję serwera docelowego, aby zobaczyć, czy nazwa hosta serwera docelowego nie jest poprawna ani nie zawiera niepotrzebnych spacji lub znaków specjalnych.
- Jeśli host serwera docelowego jest tworzony dynamicznie, sprawdź odpowiednią zasadę (na przykład AssignMessage/JavaScript) użytą do jego utworzenia. Zaznacz sprawdź, czy nazwa hosta serwera docelowego nie jest prawidłowa ani nie zawiera spacji lub znaków specjalnych.
- Po określeniu nazwy hosta serwera docelowego uruchom polecenie
nslookup/dig
na tej nazwie, aby sprawdzić, czy uda się go rozwiązać.Na przykład uruchomienie polecenia
nslookup
w przypadku nazwy hosta z niepotrzebną spacją spowoduje zwrócenie tych danych wyjściowych:nslookup "demo-target.apigee.net " Server: 49.205.75.2 Address: 49.205.75.2#53 ** server can't find demo-target.apigee.net\032: NXDOMAIN
- Jeśli polecenie systemu operacyjnego
nslookup
również nie rozwiąże problemu z nazwą hosta, przyczyną tego problemu jest nieprawidłowa nazwa hosta użyta dla serwera docelowego.Kliknij Rozwiązanie.
Logi procesora wiadomości
Aby zdiagnozować za pomocą logów procesora wiadomości:
- Określ identyfikator wiadomości nieudanego żądania.
- Wyszukaj identyfikator wiadomości w dzienniku procesora wiadomości. (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) - Jeśli zobaczysz poniższe ostrzeżenie lub komunikaty o błędach, oznacza to, że procesor wiadomości nie mógł rozpoznać nazwy hosta. Wiadomość zostanie odłożona, więc możesz tego nie widzieć
dla wszystkich identyfikatorów/żądań wiadomości.
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN S.HTTPCLIENTSERVICE - DNSCache$2.failed() : Failed to resolve hostname www.somehost.com . Reason mocktarget.apigee.net : Name or service not known. This log message will snooze for 2 hours
- Po jego zakończeniu zostanie wyświetlone ostrzeżenie informujące o tym, że procesor wiadomości usuwa adres z pamięci podręcznej DNS, ponieważ nie można nawiązać połączenia z hostem serwera docelowego.
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.addressNotReachable() : The last address has been removed from Address list null refreshing
- Może pojawić się komunikat, w którym procesor wiadomości ulega awarii. Wyjątkiem jest „Host nieosiągalny”. Czasami nazwa hosta jest widoczna w komunikacie o błędzie:
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to demo-target.apigee.net failed with exception {} java.lang.RuntimeException: Host not reachable at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704) at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675) at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234) …<snipped>
- Czasami może mieć wartość null, ponieważ nazwy hosta nie można rozpoznać ani uzyskać, jak pokazano poniżej:
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to null failed with exception {} java.lang.RuntimeException: Host not reachable at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704) at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675) at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234) …<snipped>
- Błąd
Host not reachable
występuje zwykle w jednym z tych przypadków:- Nazwa hosta określona w konfiguracji serwera docelowego lub docelowego punktu końcowego jest nieprawidłowa lub zawiera niechciane znaki specjalne albo odstępy.
Na przykład w nazwie hosta „demo-target.apigee.net” znajduje się niechciana przestrzeń. w tym komunikacie o błędzie:NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to demo-target.apigee.net failed with exception
- Nazwa hosta zastąpiona zmienną target.url na serwerze proxy API przez zasadę AssignMessage lub JavaScript jest nieprawidłowa albo zawiera spację lub inne niechciane znaki specjalne.
- Nazwa hosta określona w konfiguracji serwera docelowego lub docelowego punktu końcowego jest nieprawidłowa lub zawiera niechciane znaki specjalne albo odstępy.
- Określ nazwę hosta serwera docelowego, z którym procesor wiadomości próbuje się komunikować, używając jednej z tych metod:
- Uważnie zapoznaj się z komunikatem o błędzie zawierającym
Host not reachable
. - Jeśli w komunikacie o błędzie pojawia się nazwa hosta, skopiuj ją razem ze spacjami i znakami specjalnymi.
- Jeśli nazwa hosta w komunikacie o błędzie to null, jak w tym komunikacie o błędzie:
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to null failed with exception {}
- Określ nazwę hosta, sprawdzając definicję serwera docelowego używaną na awarii serwera proxy interfejsu API.
- Jeśli host serwera docelowego jest tworzony dynamicznie, sprawdź odpowiednią zasadę (na przykład AssignMessage/JavaScript) użytą do jego utworzenia.
- Po określeniu nazwy hosta serwera docelowego uruchom polecenie nslookup/dig dla tej nazwy hosta i sprawdź, czy uda się go znaleźć.
Na przykład uruchom polecenie nslookup dla nazwy hosta ze spacją
nslookup "demo-target.apigee.net " Server: 49.205.75.2 Address: 49.205.75.2#53 ** server can't find demo-target.apigee.net\032: NXDOMAIN
- Jeśli polecenie systemu operacyjnego nslookup także nie rozwiąże problemu z nazwą hosta, przyczyną tego problemu jest nieprawidłowa nazwa hosta użyta dla serwera docelowego.
Rozdzielczość
- Upewnij się, że nazwa hosta serwera docelowego określona w konfiguracji docelowego punktu końcowego lub na serwerze docelowym jest poprawna i nie zawiera niepotrzebnych spacji ani znaków specjalnych.
- Jeśli używasz zasad przypisywania wiadomości/JavaScript do dynamicznego generowania nazwy hosta serwera docelowego, sprawdź definicję zasad i kod. i sprawdź, czy nazwa hosta serwera docelowego została prawidłowo wygenerowana.
Nieudane uzgadnianie połączenia SSL
Cały poradnik dotyczący rozwiązywania problemów jest poświęcony błędom uzgadniania połączenia TLS/SSL. Zobacz Błędy uzgadniania połączenia SSL.
Określanie źródła problemu
Pewne typy błędów mogą występować zarówno w ruchu przychodzącym (w kierunku północnym), jak i na ruchu wychodzącym (południowym) połączenia. Między aplikacją kliencką a Edge występuje błąd przychodzący (w kierunku północnym). An błąd ruchu wychodzącego (południowo) między brzegiem a serwerem docelowym backendu. Aby zdiagnozować te problemy, rodzajów problemów, pierwszym zadaniem jest ustalenie, czy błąd występuje w kierunku północnym w kierunku południowym.
Omówienie połączeń w kierunku północnym i południowym
W Edge może wystąpić błąd 503 Service Unavailable (Niedostępna usługa) w przypadku połączenia przychodzącego lub wychodzącego:
- Połączenie przychodzące (lub w kierunku północnym) – połączenie między klientem i routera brzegowego. Router to komponent Apigee Edge, który obsługuje żądań przychodzących do systemu.
- Połączenie wychodzące (lub południowe) – połączenie między urządzeniem Edge procesor komunikatów i serwer backendu. Procesor wiadomości jest komponentem Apigee Edge który obsługuje żądania interfejsu API wysyłane do serwerów docelowych backendu.
Jeśli korzystasz z Edge Public Cloud, prawdopodobnie nie znasz jeszcze komponentów wewnętrznych, takich jak z routerem lub procesorem wiadomości. Te wewnętrzne komponenty nie są widoczne ani dostępne dla użytkowników chmury publicznej. W miarę możliwości oferujemy alternatywne sposoby badania problemu, nie wymagają bezpośredniego dostępu do tych komponentów.
Poniższy rysunek przedstawia połączenia w kierunku północnym i południowym w Apigee Edge.
Określanie miejsca, w którym wystąpił błąd 503 Service niedostępna
Użyj jednej z poniższych procedur, aby sprawdzić, czy wystąpił błąd 503 Service Unavailable (Usługa niedostępna) w kierunku północnym lub południowym.
Śledzenie interfejsu
Aby określić, gdzie wystąpił błąd, za pomocą śledzenia UI:
- Jeśli problem jest nadal aktywny, włącz śledzenie UI dla interfejsu API, którego dotyczy problem.
- Jeśli log czasu w interfejsie błędu żądania do interfejsu API pokazuje, że pojawia się błąd 503 Usługa niedostępna ma miejsce w trakcie przepływu żądania lub jest wysyłane przez serwer backendu, problem powoduje southbound (czyli między procesorem wiadomości a backendem) serwer).
- Jeśli nie widzisz danych śledzenia konkretnego wywołania interfejsu API, problem jest taki: północ między aplikacją kliencką a routerem.
Monitorowanie interfejsów API
Monitorowanie interfejsów API umożliwia szybkie wyizolowanie problematycznych obszarów w celu diagnozowania błędów, wydajności i opóźnień oraz ich źródła. takich jak aplikacje dla programistów, serwery proxy API, środowiska docelowe backendu czy platforma API.
Przeanalizuj przykładowy scenariusz pokazujący, jak rozwiązywać problemy z kodem 5xx w interfejsach API przy użyciu monitorowania interfejsów API.
Możesz na przykład skonfigurować alert, aby otrzymywać powiadomienia, gdy liczba messaging.adaptors.http.flow.ServiceUnavailable
błędów przekroczy określony próg.
Logi dostępu NGINX
Aby określić, gdzie wystąpił błąd, za pomocą śledzenia UI:
Jeśli problem wystąpił w przeszłości lub występuje tylko raz i nie możesz przechwyć ślad, a następnie wykonaj te czynności:
- Sprawdź logi dostępu NGINX (
/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log
). - Wyszukaj błędy 503 dla określonego serwera proxy interfejsu API.
- Jeśli uda Ci się zidentyfikować błędy 503 dotyczące konkretnego interfejsu API w określonym czasie, wystąpił problem przy połączeniu południowym (między procesorem wiadomości serwer backendu).
- Jeśli nie, problem wystąpił na połączeniu północnym (między aplikację kliencką i router).