503 Usługa niedostępna

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:
  • Błąd 503 Usługa niedostępna spowodowany przez rozpoznawanie nazw DNS i problemy z siecią w Apigee Edge
  • Rozwiązywanie problemów z błędem 503 „Niedostępna usługa” w czasie rzeczywistym spowodowanym przez problem z rozpoznawaniem nazw DNS
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:

  1. Jeśli problem jest nadal aktywny, włącz sesję śledzenia dla odpowiedniego interfejsu API.
  2. Wykonaj wywołanie interfejsu API i odtwórz problem – usługa 503 jest niedostępna z kodem błędu messaging.adaptors.http.flow.ServiceUnavailable.
  3. Wybierz jedno z nieudanych żądań.
  4. 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.

    Identyfikator wiadomości w sekcji szczegółów etapu

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:

  1. Sprawdź logi dostępu NGINX: (/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log)
  2. 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.
  3. 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

    Przykładowy wpis przedstawiający kod stanu, identyfikator komunikatu, źródło i kod błędu

Błędy połączenia z powodu nieprawidłowego rozpoznawania nazw DNS

Diagnostyka

  1. Określ identyfikator wiadomości nieudanego żądania.
  2. 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)
          
  3. 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.
  4. Jeśli adres IP jest nieprawidłowy, najprawdopodobniej przyczyną są problemy z rozpoznawaniem nazw DNS.
  5. 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.
  6. 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]
          
  7. 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.
  8. 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.
    1. 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.
    2. 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.
  9. 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.

  1. 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ć.
  2. 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

  1. Określ identyfikator wiadomości nieudanego żądania.
  2. 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:
    1. 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)
      
    2. 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]
      
  3. Sprawdź, czy możesz połączyć się z konkretnym serwerem backendu bezpośrednio z poziomu Procesory wiadomości za pomocą polecenia telnet:
    1. Jeśli serwer backendu ma pojedynczy adres IP, użyj tego polecenia:
      telnet BackendServer-IPaddress 443
                
    2. 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
                
  4. 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:

  1. Jeśli problem jest nadal aktywny, włącz sesję śledzenia dla odpowiedniego interfejsu API.
  2. Wykonaj wywołanie interfejsu API i odtwórz problem – usługa 503 jest niedostępna z kodem błędu messaging.adaptors.http.flow.ServiceUnavailable.
  3. Wybierz jedno z nieudanych żądań.
  4. Przejdź przez różne fazy śledzenia i znajdź miejsca, w których wystąpił błąd.
  5. 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

    Przykładowe żądanie z widocznym parametrem error.cause w śledzeniu
  6. 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.
  7. 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.
  8. 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.
  9. 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
    
  10. 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:

  1. Określ identyfikator wiadomości nieudanego żądania.
  2. Wyszukaj identyfikator wiadomości w dzienniku procesora wiadomości. (/opt/apigee/var/log/edge-message-processor/logs/system.log)
  3. 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
        
  4. 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
        
  5. 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>
        
  6. 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>
        
  7. 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.
  8. Określ nazwę hosta serwera docelowego, z którym procesor wiadomości próbuje się komunikować, używając jednej z tych metod:
    1. Uważnie zapoznaj się z komunikatem o błędzie zawierającym Host not reachable .
    2. Jeśli w komunikacie o błędzie pojawia się nazwa hosta, skopiuj ją razem ze spacjami i znakami specjalnymi.
    3. 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 {}
              
      1. Określ nazwę hosta, sprawdzając definicję serwera docelowego używaną na awarii serwera proxy interfejsu API.
      2. Jeśli host serwera docelowego jest tworzony dynamicznie, sprawdź odpowiednią zasadę (na przykład AssignMessage/JavaScript) użytą do jego utworzenia.
  9. 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
          
  10. 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ść

  1. 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.
  2. 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.

Przepływ aplikacji klienckiej (połączenie w kierunku północnym) przez Edge z serwerem backendu (połączenie wychodzące)

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:

  1. Jeśli problem jest nadal aktywny, włącz śledzenie UI dla interfejsu API, którego dotyczy problem.
  2. 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).
  3. 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:

  1. Sprawdź logi dostępu NGINX (/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log).
  2. Wyszukaj błędy 503 dla określonego serwera proxy interfejsu API.
  3. 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).
  4. Jeśli nie, problem wystąpił na połączeniu północnym (między aplikację kliencką i router).