Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Krótki opis problemu
W odpowiedzi na wywołania interfejsu API aplikacja kliencka otrzymuje kod stanu HTTP 404
z komunikatem Not Found
i komunikatem o błędzie Unable to identify proxy for host: VIRTUAL_HOST and url: PATH
.
Ten błąd oznacza, że Edge nie udało się znaleźć serwera proxy interfejsu API dla określonego hosta wirtualnego i ścieżki.
Komunikat o błędzie
Otrzymasz taki kod stanu HTTP:
HTTP/1.1 404 Not Found
Zobaczysz też komunikat o błędzie podobny do tego:
{ "fault":{ "faultstring":"Unable to identify proxy for host: default and url: \/oauth2\/token", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
Powyższy komunikat o błędzie oznacza, że Edge nie udało się znaleźć serwera proxy interfejsu API dla hosta wirtualnego default
i ścieżki /oauth2/token
.
Możliwe przyczyny
Oto kilka możliwych przyczyn tego błędu:
Przyczyna | Opis | Instrukcje rozwiązywania problemów dotyczące |
---|---|---|
Serwer proxy interfejsu API nie jest powiązany z konkretnym hostem wirtualnym | Serwer proxy interfejsu API nie jest skonfigurowany do akceptowania żądań z hosta wirtualnego określonego w komunikacie o błędzie. | Użytkownicy chmury publicznej i prywatnej usługi Edge |
Host wirtualny został usunięty z nowo wdrożonej wersji serwera proxy interfejsu API | Ten problem może spowodować usunięcie hosta wirtualnego z nowo wdrożonej wersji, gdy klient nadal korzysta z określonego hosta wirtualnego. | Użytkownicy chmury publicznej i prywatnej usługi Edge |
Ścieżka nie jest powiązana z żadnym serwerem proxy interfejsu API | Serwer proxy interfejsu API nie jest skonfigurowany do akceptowania żądań z ścieżki podanej w komunikacie o błędzie. | Użytkownicy chmury publicznej i prywatnej usługi Edge |
Serwer proxy interfejsu API nie został wdrożony w środowisku | Określony serwer proxy interfejsu API nie jest wdrożony w konkretnym środowisku, w którym próbujesz wysyłać żądania do interfejsu API. | Użytkownicy chmury publicznej i prywatnej usługi Edge |
Środowisko nie zostało załadowane w procesorze wiadomości | Określone środowisko (w którym próbujesz wysyłać żądania do interfejsu API) nie zostało wczytane przez procesory wiadomości z powodu błędu. | Użytkownicy chmury Private Cloud |
W co najmniej jednym procesorze wiadomości nie wdrożono serwera proxy interfejsu API | Serwer proxy interfejsu API może nie być wdrożony w co najmniej jednym procesorze wiadomości z powodu braku powiadomienia o zdarzeniu podczas wdrażania. | Użytkownicy chmury Private Cloud |
Najczęstsze kroki diagnostyki
Logi NGINX i procesora wiadomości pomogą Ci rozwiązać problem z błędem 404
.
Aby sprawdzić dzienniki, wykonaj te czynności:
- Wyświetl logi NGINX za pomocą tego polecenia:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Sprawdź, czy we wpisach logu nie występują te pola:
Pole Wartość Upstream_status, status
404
X-Apigee-fault-code
messaging.adaptors.http.flow.ApplicationNotFound
Zanotuj identyfikator wiadomości w dziennikach.
- Sprawdź logi procesora wiadomości (
/opt/apigee/var/log/edge-message-processor/logs/system.log)
, aby sprawdzić, czy maszmessaging.adaptors.http.flow.ApplicationNotFound
dla konkretnego interfejsu API, czy masz unikalny identyfikator wiadomości z kroku 2 dla żądania do interfejsu API.Przykładowy komunikat o błędzie z dziennika procesora wiadomości
NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:POST, uri:/weather, message Id:null, exception:com.apigee.rest.framework.ResourceNotFoundException{ code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weather, associated contexts = []}, context:Context@342ea86b input=ClientInputChannel(SSLClientChannel[Accepted: Remote:10.123.123.123:8443 Local:10.135.33.68:62092]@1206954 useCount=1 bytesRead=0 bytesWritten=0 age=1ms lastIO=0ms isOpen=true)
Powyższy dziennik zawiera kod błędu, a ten komunikat o błędzie:
code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weather
Przyczyna: serwer proxy interfejsu API nie jest powiązany z konkretnym hostem wirtualnym
Jeśli serwer proxy interfejsu API nie jest skonfigurowany do akceptowania żądań konkretnego hosta wirtualnego, możemy otrzymać odpowiedź 404 Not Found
z komunikatem o błędzie Unable to identify proxy for host: VIRTUAL_HOST and url: PATH.
Diagnostyka
- Sprawdź konfigurację punktu końcowego serwera proxy dla serwera proxy interfejsu API i zobacz, czy serwer proxy interfejsu API jest skonfigurowany tak, aby przyjmować żądania od hosta wirtualnego określonego w błędzie. Wskazuje to element
VirtualHost
. Przeanalizujmy przykładową konfiguracjęProxyEndpoint
, aby lepiej to zrozumieć.Przykładowa konfiguracja punktu końcowego serwera proxy pokazująca, że serwer proxy interfejsu API akceptuje żądania od bezpiecznego hosta wirtualnego
- Załóżmy, że hosty wirtualne są zdefiniowane w konkretnym środowisku w następujący sposób:
Nazwa Port Alias hosta default
80
myorg-prod.apigee.net
secure
443
myorg-prod.apigee.net
- Wysyłasz żądanie API do
default
VirtualHost
przy użyciu adresu URLhttp://myorg-prod.apigee.net/weather
- Ponieważ
ProxyEndpoint
nie madefault
VirtualHost
, jak pokazano w przykładzie powyżej, otrzymasz kod odpowiedzi404
z tym komunikatem o błędzie:{"fault":{"faultstring":"Unable to identify proxy for host: default and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}}
- Aby rozwiązać ten problem, przejdź do sekcji Rozwiązanie poniżej.
- Jeśli konfiguracja
ProxyEndpoint
jest skonfigurowana tak, aby akceptować żądania zdefault
VirtualHost
, przejdź do następnej przyczyny – Ścieżka nie jest powiązana z żadnym serwerem proxy interfejsu API.
Rozdzielczość
- Aby rozwiązać ten problem, dodaj brakujące elementy
VirtualHost
do konfiguracjiProxyEndpoint
. W przykładzie powyżej możesz dodać domyślną wartośćVirtualHost
do konfiguracjiProxyEndpoint
w ten sposób:<VirtualHost>default</VirtualHost>
Przykładowa konfiguracja punktu końcowego serwera proxy z dodawanym ustawieniem domyślnym> VirtualHost>
- Jeśli w powyższym przykładzie zamierzasz użyć tylko
secure
VirtualHost
dla tego konkretnego serwera proxy interfejsu API, wyślij żądania do interfejsu API tylko dosecure
VirtualHost
za pomocą protokołu HTTPS:https://myorg-prod.apigee.net/weather
Przyczyna: host wirtualny został usunięty z nowo wdrożonej wersji serwera proxy interfejsu API
Ten problem może być przyczyną wdrożenia nowej wersji serwera proxy interfejsu API po usunięciu określonego hosta wirtualnego (który był częścią poprzednio wdrożonej wersji), który jest nadal używany przez klienty do wysyłania żądań do interfejsu API.
Diagnostyka
- Sprawdź konfigurację punktu końcowego serwera proxy dla serwera proxy interfejsu API, aby zobaczyć, czy serwer proxy interfejsu API jest skonfigurowany do akceptowania żądań hosta wirtualnego określonego w błędzie. Wskazuje to element
VirtualHost
w konfiguracjiProxyEndpoint
. - Jeśli hosta wirtualnego wskazanego w błędzie nie ma w konfiguracji
ProxyEndpoint
, wykonaj poniższe czynności. W przeciwnym razie przejdź do następnej przyczyny – ścieżka nie jest powiązana z żadnym serwerem proxy interfejsu API. - Porównaj konfigurację
ProxyEndpoint
wcześniej wdrożonej wersji z obecnie wdrożoną.- Załóżmy na przykład, że poprzednio wdrożona wersja to
5
, a obecnie wdrożona wersja to6
:- Hosty wirtualne skonfigurowane w punkcie końcowym serwera proxy w wersji 5
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection>
- Hosty wirtualne skonfigurowane w punkcie końcowym serwera proxy w wersji 6
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection>
- Załóżmy na przykład, że poprzednio wdrożona wersja to
- W tym przykładzie obiekt
VirtualHost vh1
istniał w regionierevision 5,
, ale został usunięty wrevision 6
i zastąpiony przezVirtualHost secure
. - Jeśli więc Ty lub Twoi klienci wysyłacie żądania do tego serwera proxy interfejsu API za pomocą elementu
VirtualHost vh1
(będącego częściąrevision 5
), otrzymasz kod odpowiedzi404
z tym komunikatem o błędzie:{"fault":{"faultstring":"Unable to identify proxy for host: vh1 and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}}
Rozdzielczość
Jeśli zauważysz, że hosty wirtualne lub hosty zostały usunięte w nowej wersji, może to być celowe lub przypadkowe. W każdym z tych przypadków wykonaj te czynności, aby rozwiązać problem.
Scenariusz 1: celowa zmiana
Jeśli usunięcie hosta wirtualnego jest zamierzone, możesz wybrać jedną z tych opcji, przy czym pierwsza opcja jest metodą zalecaną:
- Utwórz nowy serwer proxy z inną ścieżką bazową i użyj innego hosta wirtualnego (który nie istnieje we wcześniej wdrożonej wersji).
-
Jeśli chcesz nadal korzystać z istniejącego serwera proxy interfejsu API, ale używasz innego hosta wirtualnego, lepiej zachować istniejącego hosta wirtualnego i dodać kolejnego hosta wirtualnego.
Dzięki temu zmiana nie będzie miała wpływu na użytkowników tego serwera proxy interfejsu API.
Jeśli chcesz korzystać z istniejącego serwera proxy interfejsu API i masz tylko innego hosta wirtualnego, poinformuj o tym użytkowników z wyprzedzeniem i wprowadź tę zmianę w okresie konserwacji.
Dzięki temu użytkownicy tego serwera proxy interfejsu API będą wiedzieć o zmianie i będą mogli używać innego hosta wirtualnego do wywoływania tego serwera proxy interfejsu API. Dlatego ta zmiana nie będzie miała na nich wpływu.
Scenariusz 2. Niezamierzona zmiana
Jeśli usunięcie hosta wirtualnego jest wynikiem błędu i nie jest zamierzone,wykonaj te czynności:
- Zaktualizuj konfigurację
ProxyEndpoint
w obecnie wdrożonej wersji, aby używać tych samych hostów wirtualnych, które były używane we wcześniej wdrożonej wersji. W powyższym przykładzie zmień tę sekcję z:<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection>
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection>
- Wdróż ponownie wersję.
Sprawdzone metody
Zalecamy wdrażanie nowych serwerów proxy lub nowych wersji w okresie konserwacji lub w czasie, gdy ruch jest najmniej oczekiwany, aby uniknąć problemów występujących podczas wdrażania i zminimalizować ich wpływ na ruch.
Przyczyna: ścieżka nie jest powiązana z żadnym serwerem proxy interfejsu API
Jeśli serwer proxy interfejsu API nie jest skonfigurowany do akceptowania żądań dotyczących określonej ścieżki używanej w adresie URL żądania interfejsu API, możemy otrzymać odpowiedź 404 Not Found
z komunikatem o błędzie Unable to identify proxy for host: VIRTUAL_HOST and url: PATH.
Diagnostyka
- Sprawdź konfigurację
ProxyEndpoint
konkretnego serwera proxy interfejsu API, dla którego chcesz wysyłać żądania do API. - Sprawdź, czy serwer proxy interfejsu API jest skonfigurowany do akceptowania żądań związanych z konkretną ścieżką wskazaną w komunikacie o błędzie. Aby to zrobić, wykonaj czynności opisane w scenariuszu 1 i scenariuszu 2.
Scenariusz 1. Ścieżka nie pasuje do ścieżki bazowej serwera proxy interfejsu API
- Jeśli
path
wskazany w komunikacie o błędzie nie jest taki sam jakbasepath
konkretnego serwera proxy interfejsu API lub nie zaczyna się odbasepath
, może to być przyczyną błędu. - Przeanalizujmy przykład:
- Wartość
basepath
odpowiedniego serwera proxy interfejsu API to/weather
- URL żądania do interfejsu API to
https://myorg-prod.apigee.net/climate
. Oznacza to, że ścieżka użyta w adresie URL żądania do interfejsu API to/climate.
- W tym przykładzie
path
różni się odbasepath
i nie zaczyna się odbasepath
. W związku z tym pojawia się ten błąd:{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/climate", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
Rozdzielczość
- Sprawdź, czy
path
używany w adresie URL żądania do interfejsu API jest taki sam jakbasepath
konkretnego serwera proxy interfejsu API. - W przykładzie powyżej adres URL żądania do interfejsu API powinien wyglądać tak:
{ https://myorg-prod.apigee.net/weather
Scenariusz 2: ścieżka nie pasuje do żadnego z dostępnych przepływów warunkowych
- Jeśli element
path
używany w adresie URL żądania do interfejsu API zaczyna się odbasepath
, możliwe, że elementpath suffix
(część występująca pobasepath
) wskazywanej w komunikacie o błędzie nie pasuje do żadnego z procesów warunkowych, może to spowodować błąd404
. - Przeanalizujmy przykład:
- Wartość
basepath
odpowiedniego serwera proxy interfejsu API to/weather
- URL żądania do interfejsu API to
https://myorg-prod.apigee.net/weather/Delhi
. Oznacza to, że ścieżka użyta w adresie URL żądania do interfejsu API to/weather/Delhi.
- Wartość
- W tym przykładzie
path
zaczyna się odbasepath
/weather
. Ponadto mapath suffix
o wartości/Delhi
. - Teraz sprawdź, czy w pliku
ProxyEndpoint
są jakieś przepływy warunkowe. - Jeśli nie ma przepływów warunkowych lub jest kilka przepływów bezwarunkowych, przejdź do następnej przyczyny – serwer proxy interfejsu API nie został wdrożony w środowisku.
- Jeśli
ProxyEndpoint
zawiera tylko przepływy warunkowe, sprawdź, czy:- Jeśli warunki we wszystkich tych przepływach warunkowych sprawdzają, czy występuje określony
proxy.pathsuffix
(ścieżka po ścieżce bazowej). - A jeśli wartość
path suffix
podana w adresie URL żądania interfejsu API nie pasuje do żadnego z warunków, to jest przyczyną błędu.
- Jeśli warunki we wszystkich tych przepływach warunkowych sprawdzają, czy występuje określony
- Załóżmy, że w elemencie
ProxyEndpoint
mamy 2 procesy warunkowe, jak na przykładzie poniżej:<Condition>(proxy.pathsuffix MatchesPath "/Bangalore") and (request.verb = "GET")</Condition> <Condition>(proxy.pathsuffix MatchesPath "/Chennai") and (request.verb = "GET")</Condition>
- W powyższym przykładzie mamy 2 przepływy warunkowe: jeden pasuje do
proxy.pathsuffix
(ścieżka po ścieżce bazowej) do/Bangalore
, a drugi –/Chennai
. ale żaden nie pasuje do elementu/Delhi
, który jest wartościąpath suffix
przekazaną w adresie URL żądania do interfejsu API. - To jest przyczyna błędu
404
. W związku z tym pojawi się ten błąd:{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/weather\/Delhi", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
- W powyższym przykładzie mamy 2 przepływy warunkowe: jeden pasuje do
Rozdzielczość
- Upewnij się, że
path suffix
odpowiada co najmniej 1 przepływowi warunkowemu w punkcie końcowym serwera proxy. - Aby naprawić błąd, możesz skorzystać z tych rozwiązań:
- Jeśli chcesz uruchomić dowolny określony zestaw zasad dla ścieżki
/Delhi
, dodaj oddzielny przepływ z wymaganym zestawem zasad i sprawdź, czy istnieje warunek pasujący do elementu/Delhi
/proxy.pathsuffix
, jak pokazano poniżej:<Condition>(proxy.pathsuffix MatchesPath "/Delhi") and (request.verb = "GET")</Condition>
- Jeśli chcesz uruchamiać wspólny zestaw zasad dla ścieżki
/Delhi
, upewnij się w nim, że istnieje warunek, który pozwala na użycie ogólnego/proxy.pathsuffix
. Oznacza to, że dopuszcza ona dowolną ścieżkę pobasepath
/weather
, jak pokazano poniżej:<Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
- Jeśli chcesz uruchomić dowolny określony zestaw zasad dla ścieżki
Jeśli ProxyEndpoint
ma prawidłową wartość basepath
, a path suffix
określony w adresie URL interfejsu API jest zgodny z jednym z przepływów warunkowych, przejdź do następnej przyczyny: serwer proxy interfejsu API nie został wdrożony w środowisku.
Przyczyna: serwer proxy interfejsu API nie został wdrożony w środowisku
Diagnostyka
- Określ środowisko, w którym znajduje się alias hosta używany w adresie URL żądania do interfejsu API.
Możesz to zrobić, sprawdzając szczegóły wszystkich hostów wirtualnych w każdym ze środowisk organizacji w interfejsie użytkownika Edge.
Załóżmy na przykład, że masz taką konfigurację:
- Jeśli
http://myorg-prod.apigee.net/weather
jest Twoim adresem URL,myorg-prod.apigee.net
jest aliasem hosta. - Alias hosta
myorg-prod.apigee.net
jest skonfigurowany jako część jednego z hostów wirtualnych w środowiskuprod
organizacji.
- Jeśli
- Sprawdź, czy określony serwer proxy interfejsu API jest wdrożony w konkretnym środowisku określonym w kroku 1 powyżej.
- Jeśli serwer proxy interfejsu API nie jest wdrożony w konkretnym środowisku, jest to przyczyną błędu
404
.- Załóżmy więc, że w przykładzie użytym w kroku 1 powyżej serwer proxy interfejsu API nie jest wdrożony w środowisku
prod
, co jest przyczyną błędu. - Przejdź do sekcji Rozwiązanie poniżej.
- Załóżmy więc, że w przykładzie użytym w kroku 1 powyżej serwer proxy interfejsu API nie jest wdrożony w środowisku
- Jeśli serwer proxy interfejsu API jest wdrożony w konkretnym środowisku, przejdź do następnej przyczyny – środowisko niezaładowane przez procesory wiadomości.
Rozdzielczość
Wdróż serwer proxy interfejsu API w konkretnym środowisku, w którym chcesz wysyłać żądania do interfejsu API.
Przyczyna: nie załadowano środowiska w procesorach wiadomości
Diagnostyka
- Zaloguj się do każdego podmiotu przetwarzającego wiadomości i sprawdź, czy określone środowisko, w którym przesyłasz żądanie do interfejsu API, jest w nim wczytane, korzystając z tego polecenia:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
- Jeśli określone środowisko jest wymienione w powyższym poleceniu, przejdź do następnej przyczyny: Serwer proxy interfejsu API nie został wdrożony w co najmniej jednym procesorze wiadomości.
- Jeśli danego środowiska nie ma na liście, sprawdź, czy podczas wczytywania środowisk nie wystąpiły błędy podczas wczytywania środowisk w
/opt/apigee/var/log/edge-message-processor/logs/system.log
i/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.log
w procesorach wiadomości. - Może być wiele różnych błędów, które mogą doprowadzić do niepowodzenia wczytania środowiska w procesorze wiadomości. Rozwiązanie zależy od błędu, który wystąpił.
Rozdzielczość
Środowisko może nie być wczytywane w procesorze wiadomości z wielu powodów. W tej sekcji podano kilka możliwych przyczyn tego problemu i podaliśmy sposoby jego rozwiązania.
-
Jeśli w logu procesora wiadomości wyświetla się jeden z wymienionych niżej błędów, jest to spowodowane problemem z certyfikatami lub kluczami dodanymi do określonego magazynu kluczy lub magazynu kluczy w określonym środowisku.
Błąd 1: java.security.KeyStoreWyjątek: Nie można zastąpić własnego certyfikatu
2018-01-30 12:04:38,248 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mycert in key store : mytruststore in environment : test at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.AbstractConfigurator.propagateEvent(AbstractConfigurator.java:85) ~[config-entities-1.0.0.jar:na] at com.apigee.messaging.runtime.Environment.handleUpdate(Environment.java:238) [message-processor-1.0.0.jar:na] … Caused by: java.security.KeyStoreException: Cannot overwrite own certificate at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:355) ~[sunjce_provider.jar:1.8.0_151] at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_151] at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na]
... 20 common frames omitted
2018-01-30 12:04:38,250 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
Błąd 2: java.security.KeyStoreWyjątek: Nie można zastąpić tajnego klucza
2017-11-01 03:28:47,560 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mstore in key store : myTruststore in environment : dev at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] ... Caused by: java.security.KeyStoreException: Cannot overwrite secret key at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:354) ~[sunjce_provider.jar:1.8.0_144] at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_144] at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na] ... 20 common frames omitted 2017-11-01 03:28:47,562 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
- Uzyskaj szczegółowe informacje o magazynie kluczy/magazynie zaufania określonych w komunikacie o błędzie wyświetlanym w poprzednim kroku, używając tego wywołania interfejsu Management API:
curl -v "http://<management-IPaddress>:8080/v1/organizations/<org-name>/environments/<env-name>/keystores/myTruststore" -u <user>
Przykładowe dane wyjściowe:
{ "certs":[ "mycert", "mycert-new" ], "keys":[ "mycert" ], "name":"myTruststore" }
- Przykładowe dane wyjściowe wskazują, że w magazynie zaufania
myTruststore
są 2 certyfikaty i klucz. Magazyn zaufania zwykle nie zawiera klucza. Jeśli tak, lepiej jest mieć 1 certyfikat i 1 klucz. - Uzyskaj szczegółowe informacje o 2 certyfikatach przy użyciu tego interfejsu API:
curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>
- Sprawdź datę ważności każdego z certyfikatów i ustal datę ważności każdego z nich.
- Usuń wygasły lub niechciany certyfikat z magazynu zaufania
myTruststore
.
Jeśli problem nadal występuje lub widzisz błędy inne niż wymienione w kroku 1, przejdź do sekcji Wymagane jest zbieranie informacji diagnostycznych.
Przyczyna: serwer proxy interfejsu API nie został wdrożony w co najmniej 1 procesorze wiadomości
Serwer proxy interfejsu API może nie być wdrożony w co najmniej jednym procesorze wiadomości. Ten problem występuje bardzo rzadko i najczęściej wynika z braku powiadomienia o zdarzeniu z serwera zarządzania do podmiotu przetwarzającego wiadomości podczas wdrażania określonego serwera proxy interfejsu API. W tym przypadku również nie będzie można utworzyć sesji śledzenia w interfejsie użytkownika Edge.
Diagnostyka
- Zaloguj się do każdego procesora wiadomości i sprawdź, czy określona wersja serwera proxy interfejsu API jest wdrożona, czy nie, korzystając z tego polecenia:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
- Jeśli konkretna wersja serwera proxy interfejsu API nie wyświetla się jako dane wyjściowe polecenia opisanego w kroku 1, ponownie uruchom ten procesor wiadomości zgodnie z opisem w sekcji Rozwiązanie.
- Powtórz kroki 1–2 dla wszystkich procesorów wiadomości.
- Jeśli konkretna wersja serwera proxy interfejsu API jest wdrożona we wszystkich procesorach wiadomości, nie jest to przyczyną tego problemu. Otwórz Wymagane zbieranie informacji diagnostycznych.
Rozdzielczość
Ponownie uruchom konkretne procesory wiadomości, w których określona wersja serwera proxy interfejsu API nie jest wdrożona.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Diagnozowanie problemów za pomocą monitorowania interfejsów API
Monitorowanie interfejsów API umożliwia szybkie wyizolowanie problematycznych obszarów w celu diagnozowania problemów dotyczących błędów, wydajności i opóźnień oraz ich źródeł, takich jak aplikacje dla programistów, serwery proxy interfejsów API, cele backendu czy platforma API.
W przypadku tego problemu możesz otworzyć stronę Monitorowanie interfejsów API > Zbadaj i wybrać odpowiednią datę, serwer proxy itd. Mogą pojawić się te informacje:
- Kod błędu:
messaging.adaptors.http.flow.ApplicationNotFound
- Kod stanu:
404
- Źródło błędu:
Apigee
lubMP
Dodatkowo możesz kliknąć Wyświetl dzienniki, jak pokazano na zrzucie ekranu powyżej, i sprawdzić to dalej.
Przeanalizuj przykładowy scenariusz i dowiedz się, jak rozwiązać problemy z interfejsami API (5xx
) za pomocą monitorowania interfejsów API. Możesz na przykład skonfigurować alert, aby otrzymywać powiadomienia, gdy liczba kodów stanu w stanie 404
przekroczy określony próg.
Musisz zebrać informacje diagnostyczne
Jeśli problem nie ustąpi mimo wykonania powyższych instrukcji, zbierz poniższe informacje diagnostyczne. Skontaktuj się z zespołem pomocy Apigee Edge i udostępnij te informacje.
- Jeśli jesteś użytkownikiem chmury publicznej, podaj te informacje:
- Nazwa organizacji
- Nazwa środowiska
- Nazwa serwera proxy interfejsu API
- Wykonaj polecenie curl, aby odtworzyć błąd
- Jeśli jesteś użytkownikiem Private Cloud, podaj te informacje:
- Zaobserwowano pełny komunikat o błędzie
- Nazwa środowiska
- Pakiet proxy interfejsu API
- Procesor wiadomości loguje
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Dane wyjściowe następujących poleceń w każdym procesorze wiadomości.
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
- Informacje o wypróbowanych przez Ciebie sekcjach tego poradnika oraz o innych statystykach, które pomogą nam szybko rozwiązać ten problem.