Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Krótki opis problemu
Aplikacja kliencka otrzymuje kod stanu HTTP 404
z komunikatem
Not Found
i komunikat o błędzie
Unable to identify proxy for host: VIRTUAL_HOST and url: PATH
w odpowiedzi na wywołania interfejsu API.
Ten błąd oznacza, że Edge nie znalazł serwera proxy interfejsu API dla określonego hosta wirtualnego i ścieżki.
Komunikat o błędzie
Otrzymasz następujący kod stanu HTTP:
HTTP/1.1 404 Not Found
Zobaczysz też komunikat o błędzie podobny do tego poniżej:
{ "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 może znaleźć serwera proxy interfejsu API dla
Host wirtualny default
i ścieżka /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 niepowiązany z konkretnym hostem wirtualnym | Określony serwer proxy interfejsu API nie jest skonfigurowany do akceptowania żądań na hoście wirtualnym podane w komunikacie o błędzie. | Użytkownicy chmury publicznej i prywatnej Edge |
Host wirtualny został usunięty z nowo wdrożonej wersji serwera proxy interfejsu API | Usuwanie hosta wirtualnego z nowo wdrożonej wersji, gdy klient jest w dalszym ciągu używanie konkretnego hosta wirtualnego może powodować ten problem. | Użytkownicy chmury publicznej i prywatnej Edge |
Ścieżka nie jest powiązana z żadnym serwerem proxy interfejsu API | Określony serwer proxy interfejsu API nie jest skonfigurowany do akceptowania żądań na wskazanej ścieżce w komunikacie o błędzie. | Użytkownicy chmury publicznej i prywatnej Edge |
Serwer proxy interfejsu API nie został wdrożony w środowisku | Określony serwer proxy interfejsu API nie jest wdrożony w środowisku, w którym i prób wysyłania żądań do interfejsu API. | Użytkownicy chmury publicznej i prywatnej Edge |
Środowisko nie zostało wczytane na procesorze wiadomości | Konkretne środowisko (w którym próbujesz wysłać żądania do interfejsu API) nie zostały załadowane na procesorach wiadomości z powodu błędu. | Użytkownicy Edge Private Cloud |
Serwer proxy interfejsu API nie został wdrożony w co najmniej jednym procesorze wiadomości | Nie można wdrożyć serwera proxy interfejsu API w co najmniej jednym procesorze wiadomości z powodu braku powiadomienia o zdarzeniach podczas wdrażania. | Użytkownicy Edge Private Cloud |
Typowe kroki diagnostyki
Logi NGINX i logi procesora wiadomości pomogą w rozwiązywaniu problemu 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 wpisy logu zawierają te pola:
Pole Wartość Upstream_status, status
404
X-Apigee-fault-code
messaging.adaptors.http.flow.ApplicationNotFound
Zanotuj identyfikator wiadomości widoczny w dziennikach.
- Sprawdzanie logów procesora wiadomości
(
/opt/apigee/var/log/edge-message-processor/logs/system.log)
, aby sprawdzić, czy wartośćmessaging.adaptors.http.flow.ApplicationNotFound
dla konkretnego interfejsu API lub jeśli posiadasz unikalny identyfikatora 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)
Kod błędu i komunikat o błędzie w powyższym dzienniku wygląda tak:
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ń dla określonego 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ź, czy w konfiguracji Proxy Endpoint (Punkt końcowy serwera proxy) znajduje się serwer proxy interfejsu API.
skonfigurowano tak, aby akceptował żądania dla hosta wirtualnego wskazanego w błędzie. To jest
wskazuje element
VirtualHost
. Przyjrzyjmy się przykładowiProxyEndpoint
aby to zrozumieć.Przykładowa konfiguracja punktu końcowego serwera proxy pokazująca, że serwer proxy interfejsu API akceptuje żądania bezpieczny host wirtualny
- Załóżmy, że hosty wirtualne są zdefiniowane w konkretnym środowisku w ten sposób:
Nazwa Port Alias hosta default
80
myorg-prod.apigee.net
secure
443
myorg-prod.apigee.net
- Za pomocą adresu URL wysyłasz żądanie do interfejsu API typu
default
(VirtualHost
).http://myorg-prod.apigee.net/weather
ProxyEndpoint
nie madefault
VirtualHost
, jak pokazano w z powyższego przykładu otrzymujesz kod odpowiedzi404
z następującym komunikatem o błędzie:{"fault":{"faultstring":"Unable to identify proxy for host: default and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}}
- Przejdź do sekcji Rozwiązanie poniżej, aby dowiedzieć się, jak rozwiązać ten problem.
- Jeśli
ProxyEndpoint
jest skonfigurowane tak, aby akceptować żądania na platformiedefault
VirtualHost
, do następnej sprawy - . Ścieżka nie jest powiązana z żadnym serwerem proxy interfejsu API.
Rozdzielczość
- Dodaj brakujący element
VirtualHost
do konfiguracjiProxyEndpoint
w: i rozwiązać problem. 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 użyciem wartości domyślnej> VirtualHost> w trakcie dodawania
- Z drugiej strony, jeśli w przykładzie powyżej chcesz użyć tylko atrybutu
secure
VirtualHost
dla tego konkretnego serwera proxy interfejsu API, a następnie 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
W przypadku wdrożenia nowej wersji serwera proxy interfejsu API po usunięciu określonego hosta wirtualnego (która była częścią wcześniej wdrożonej wersji), która jest nadal używana przez klientów do wysyłania żądań do interfejsu API, może to powodować ten problem.
Diagnostyka
- Sprawdź konfigurację punktu końcowego serwera proxy serwera proxy interfejsu API, aby dowiedzieć się, czy
skonfigurowano tak, aby akceptował żądania dla hosta wirtualnego wskazanego w błędzie. To jest
wskazuje element
VirtualHost
w konfiguracjiProxyEndpoint
. - Jeśli hosta wirtualnego wskazanego w błędzie nie ma w
ProxyEndpoint
i wykonaj podane niżej czynności. W przeciwnym razie przejdź do następnej sprawy: Ścieżka nie jest powiązana z żadnym serwerem proxy interfejsu API. - Porównaj konfigurację
ProxyEndpoint
we wcześniej wdrożonej wersji z wersją aktualnie wdrożoną wdrożoną wersję.- Załóżmy na przykład, że wcześniej wdrożona wersja to
5
, a wersja 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 wcześniej wdrożona wersja to
- W powyższym przykładzie
VirtualHost vh1
istniał w lokalizacjirevision 5,
, ale została usunięta wrevision 6
i zastąpiona przezVirtualHost secure
. - Jeśli więc Ty lub Twoi klienci wysyłacie żądania do tego serwera proxy interfejsu API za pomocą
VirtualHost vh1
(które było częściąrevision 5
), otrzymasz404
z kodem odpowiedzi 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 host lub hosty wirtualne zostały usunięte w nowej wersji, może to być zamierzone lub przez wypadku. W każdym przypadku wykonaj te czynności, aby rozwiązać problem.
Scenariusz 1: zamierzona zmiana
Jeśli usunięcie hosta wirtualnego jest zamierzone, możesz wybrać jedną z tych opcji: przy czym pierwsza opcja jest zalecana:
- Utwórz nowy serwer proxy z inną ścieżką podstawową i użyj innego hosta wirtualnego (który nie istnieje we wcześniej wdrożonej wersji).
-
Jeśli chcesz nadal używać dotychczasowego serwera proxy interfejsu API, ale używać innego hosta wirtualnego, lepiej zachować istniejący host wirtualny i dodać dodatkowego.
Dzięki temu ta zmiana nie będzie miała wpływu na użytkowników tego serwera proxy interfejsu API.
Jeśli chcesz używać istniejącego serwera proxy interfejsu API i masz tylko innego hosta wirtualnego: poinformuj o tym użytkowników z wyprzedzeniem i wprowadź zmianę w trakcie prac konserwacyjnych.
Dzięki temu użytkownicy tego serwera proxy interfejsu API będą wiedzieć o zmianie i będą może używać innego hosta wirtualnego do wywoływania tego serwera proxy interfejsu API. Z tego powodu będą i nie ma wpływu na zmiany.
Scenariusz 2: niezamierzona zmiana
Jeśli host wirtualnego został usunięty przez pomyłkę i nie był zamierzony,wykonaj te czynności:
- Zaktualizuj do użycia konfigurację
ProxyEndpoint
we obecnie wdrożonej wersji te same hosty wirtualne, które były używane we wcześniej wdrożonej wersji. W powyżej, zmień następującą 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
Zawsze zaleca się wdrażanie nowych serwerów proxy lub nowych wersji w okresie konserwacji lub kiedy ruch jest spodziewany najmniejszy, aby problemy pojawiające się podczas wdrażania mogły zostać uniknąć lub ograniczyć wpływ tego problemu 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ń dla określonej ścieżki używanej w metodzie
URL żądania 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
dla konkretnego serwera proxy interfejsu API, którego dotyczy wysyłania żądań do interfejsu API. - Sprawdź, czy serwer proxy interfejsu API jest skonfigurowany tak, aby akceptował żądania dla określonej ścieżki. w komunikacie o błędzie. Aby to zrobić, wykonaj czynności podane w Scenariusz 1 Scenariusz 2.
Scenariusz 1. Ścieżka nie pasuje do ścieżki podstawowej serwera proxy interfejsu API
- Jeśli
path
wskazana w komunikacie o błędzie nie jest taki sam jakbasepath
określonego serwera proxy interfejsu API lub nie zaczyna się odbasepath
, wtedy może być przyczyną tego błędu. - Wyjaśnimy to na przykładzie:
- Element
basepath
docelowego serwera proxy interfejsu API to/weather
- Adres URL żądania do interfejsu API to
https://myorg-prod.apigee.net/climate
. Oznacza to, że ścieżka używana w adresie URL żądania do interfejsu API to/climate.
- W tym przykładzie
path
to nie to samo cobasepath
. nie zaczyna się odbasepath
. W związku z tym pojawia się następujący błąd:{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/climate", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
Rozdzielczość
- Upewnij się, że pole
path
używane w adresie URL żądania do interfejsu API jest takie samo jakbasepath
określonego serwera proxy interfejsu API. - W powyższym przykładzie 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
path
używany w adresie URL żądania interfejsu API zaczyna się odbasepath
, może się zdarzyć, żepath suffix
(część występująca po parametrzebasepath
) wskazane w komunikacie o błędzie nie pasują do żadnego z warunków to może to spowodować błąd404
. - Wyjaśnimy to na przykładzie:
- Element
basepath
docelowego serwera proxy interfejsu API to/weather
- Adres 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.
- Element
- W tym przykładzie
path
zaczyna się od/weather
basepath
. Dodatkowo mapath suffix
o wartości/Delhi
. - Następnie sprawdź, czy w
ProxyEndpoint
są jakieś przepływy warunkowe. - Jeśli nie ma przepływów warunkowych lub jest kilka przepływów niewarunkowych, otwórz następna przyczyna - Serwer proxy interfejsu API nie został wdrożony w środowisku.
- Jeśli w elemencie
ProxyEndpoint
występują tylko przepływy warunkowe, sprawdź te elementy:- Jeśli warunki we wszystkich procesach warunkowych sprawdzają się w przypadku konkretnego elementu
proxy.pathsuffix
(ścieżka po ścieżce bazowej). - A jeśli
path suffix
określony w adresie URL żądania API nie pasuje do żadnego z warunków, to to jest przyczyną błędu.
- Jeśli warunki we wszystkich procesach warunkowych sprawdzają się w przypadku konkretnego elementu
- Załóżmy, że w
ProxyEndpoint
mamy 2 przepływy i oba są przepływy warunkowe jak poniżej:<Condition>(proxy.pathsuffix MatchesPath "/Bangalore") and (request.verb = "GET")</Condition> <Condition>(proxy.pathsuffix MatchesPath "/Chennai") and (request.verb = "GET")</Condition>
- W przykładzie powyżej mamy 2 przepływy warunkowe. Jeden z nich pasuje
proxy.pathsuffix
(ścieżka za ścieżką bazową) do:/Bangalore
i inny pasuje do:/Chennai
. Nie ma jednak żadnego pasującego do zapytania/Delhi
czyli identyfikatorpath suffix
przekazany w adresie URL żądania do interfejsu API. - To jest przyczyna błędu
404
. W związku z tym pojawi się następujący błąd:{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/weather\/Delhi", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
- W przykładzie powyżej mamy 2 przepływy warunkowe. Jeden z nich pasuje
Rozdzielczość
- Upewnij się, że
path suffix
jest zgodny z co najmniej 1 przepływem warunkowym w punkcie końcowym serwera proxy. - W przykładzie powyżej możesz użyć tych rozwiązań:
- Jeśli chcesz zastosować określony zestaw zasad dla ścieżki
/Delhi
, dodaj osobny proces z wymaganym zestawem zasad i dopilnuj, aby był spełniony warunek zgodny z/proxy.pathsuffix
/Delhi
, jak pokazano poniżej:<Condition>(proxy.pathsuffix MatchesPath "/Delhi") and (request.verb = "GET")</Condition>
- Jeśli chcesz zastosować wspólny zestaw zasad dla ścieżki
/Delhi
, wówczas w należy uwzględnić warunek, który pozwala na użycie/proxy.pathsuffix
Oznacza to, że będzie zezwalać na każdą ścieżkę pobasepath
/weather
jak poniżej:<Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
- Jeśli chcesz zastosować określony zestaw zasad dla ścieżki
Jeśli ProxyEndpoint
zawiera poprawną wartość basepath
i element path suffix
określony w adresie URL interfejsu API
pasuje do jednego z przepływów warunkowych, a następnie przechodzi do kolejnej 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 istnieje alias hosta używany w adresie URL żądania do interfejsu API.
Można to zrobić, sprawdzając szczegóły wszystkich hostów wirtualnych w każdym środowisku.
organizacji w interfejsie Edge.
Załóżmy na przykład, że konfiguracja jest taka:
- Jeśli
http://myorg-prod.apigee.net/weather
to Twój URL,myorg-prod.apigee.net
to alias hosta. - Alias hosta
myorg-prod.apigee.net
jest skonfigurowany jako część jednej z hosty wirtualne w środowiskuprod
Twojej organizacji.
- Jeśli
- Sprawdź, czy dany serwer proxy interfejsu API został wdrożony w konkretnym środowisku określonym w kroku 1 powyżej.
- Jeśli serwer proxy interfejsu API nie jest wdrożony w danym środowisku, to jest przyczyną
błąd
404
.- Zatem w przykładzie użytym w kroku 1 powyżej załóżmy, że serwer proxy interfejsu API nie został wdrożony
prod
, to to jest przyczyną błędu. - Przejdź do sekcji Rozwiązanie poniżej.
- Zatem w przykładzie użytym w kroku 1 powyżej załóżmy, że serwer proxy interfejsu API nie został wdrożony
- Jeśli serwer proxy interfejsu API jest wdrożony w konkretnym środowisku, przejdź do następnej przyczyny: Nie wczytano środowiska na procesorach wiadomości.
Rozdzielczość
Wdróż serwer proxy interfejsu API w konkretnym środowisku, w którym chcesz wysyłać żądania do interfejsu API.
Przyczyna: środowisko nie zostało wczytane na procesorach wiadomości
Diagnostyka
- Zaloguj się do każdego z procesorów wiadomości i sprawdź, czy środowisko, w którym
żądania do interfejsu API są wczytywane do procesora wiadomości za pomocą następującego polecenia:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
- Jeśli konkretne środowisko jest wymienione w ramach powyższego polecenia, przejdź do następnej przyczyny: Nie wdrożono serwera proxy interfejsu API w co najmniej jednym procesorze wiadomości.
- Jeśli danego środowiska nie ma na liście, sprawdź,
/opt/apigee/var/log/edge-message-processor/logs/system.log
i/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.log
w: Procesory komunikatów do wykrywania błędów podczas wczytywania środowisk. - Może być wiele różnych błędów, które mogą prowadzić do niepowodzeń podczas wczytywania środowiska do procesora wiadomości. Rozwiązanie zależy od rodzaju błędu.
Rozdzielczość
Środowisko może nie zostać załadowane w procesorze wiadomości z wielu powodów. Ta sekcja przedstawia kilka możliwych przyczyn tej sytuacji i wyjaśnia, jak ją rozwiązać. i rozpoznają problem.
-
Jeśli w dzienniku procesora wiadomości pojawi się jeden z poniższych błędów, jest on spowodowany przez znaleziono problem z certyfikatami/kluczami, które zostały dodane do określonego magazynu kluczy/magazynu kluczy w określonym środowisku.
Błąd 1: java.security.KeyStoreException: 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.KeyStoreException: Nie można zastąpić klucza obiektu tajnego
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
- Pobierz szczegóły magazynu kluczy/magazynu zaufania określonego w komunikacie o błędzie wyświetlanym w
w poprzednim kroku przy użyciu tego wywołania interfejsu zarządzania 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 pokazują, że w magazynie zaufania są 2 certyfikaty i klucz
myTruststore
Magazyn zaufania zwykle nie zawiera klucza. Jeśli tak, jest lepiej jest mieć 1 certyfikat i 1 klucz. - Aby uzyskać szczegółowe informacje o 2 certyfikatach, użyj 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 certyfikatu i określ, który certyfikat stracił ważność lub jest starszy.
- Usuń wygasły lub niechciany certyfikat z zaufanego magazynu
myTruststore
.
Jeśli problem nadal występuje lub widzisz błąd inny niż wymienione w kroku 1 powyżej przejdź do sekcji Wymagane są informacje diagnostyczne.
Przyczyna: serwer proxy interfejsu API nie wdrożona w co najmniej jednym procesorze wiadomości
Nie można wdrożyć serwera proxy interfejsu API w co najmniej jednym procesorze wiadomości. Ten problem występuje bardzo rzadko i zdarza się głównie z powodu brakującego powiadomienia o zdarzeniu przesyłanego przez serwer zarządzania do Procesor komunikatów podczas wdrażania określonego serwera proxy interfejsu API. W tym przypadku również nie można utworzyć sesji śledzenia w interfejsie Edge.
Diagnostyka
- Zaloguj się do każdego z procesorów wiadomości i sprawdź, czy jego wersja
Serwer proxy interfejsu API został wdrożony lub nie używa tego polecenia:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
- Jeśli określona wersja serwera proxy interfejsu API nie wyświetla się jako wynik polecenia wymienione w kroku 1 powyżej, a następnie uruchom ponownie określony procesor wiadomości zgodnie z opisem na stronie Rozwiązanie.
- Powtórz kroki 1–2 dla wszystkich procesorów wiadomości.
- Jeśli określona wersja serwera proxy interfejsu API jest wdrożona we wszystkich procesorach wiadomości, to nie jest przyczyna tego problemu. Przejdź do Musi zbierać informacje diagnostyczne.
Rozdzielczość
Uruchom ponownie konkretne procesory wiadomości, na których jest określona wersja serwera proxy interfejsu API nie wdrożono.
/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. do diagnozowania błędów, wydajności i opóźnień oraz problemów z ich źródłem, takich jak aplikacje Serwery proxy interfejsu API, cele backendu lub platforma API.
Aby rozwiązać ten problem, możesz przejść do sekcji Monitorowanie interfejsów API > Zbadaj stronę wybierz odpowiednią datę, serwer proxy itd. mogą zostać wyświetlone następujące szczegóły:
- Kod błędu:
messaging.adaptors.http.flow.ApplicationNotFound
- Kod stanu:
404
- Źródło błędu:
Apigee
lubMP
Możesz też kliknąć Wyświetl dzienniki (jak pokazano na zrzucie ekranu powyżej), i sprawdź więcej.
Przeanalizuj przykładowy scenariusz pokazujący, jak
Rozwiąż problemy z interfejsami API: 5xx
przy użyciu API Monitoring. Możesz na przykład
chcesz skonfigurować alert, aby otrzymywać powiadomienia, gdy liczba kodów stanu (404
) przekroczy
dla konkretnego progu.
Musi zbierać informacje diagnostyczne
Jeśli po wykonaniu powyższych czynności problem nie ustąpi, 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 serwerów proxy interfejsu API
- Logi procesora wiadomości
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Dane wyjściowe poniższych poleceń na każdym z procesorów wiadomości.
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
- szczegółowe informacje o wypróbowanych sekcjach tego poradnika i innych statystykach, pomoże nam szybko rozwiązać ten problem.