Debugowanie rozszerzenia

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Możesz debugować rozszerzenie przy użyciu komunikatów widocznych w 2 miejscach: w narzędziu do śledzenia i dziennikach rozszerzeń. Jeśli rozszerzenie nie działa, zidentyfikowanie problemu może czasem wymagać podania informacji z obu miejsc.

  • Narzędzie śledzenia Apigee Edge pozwala iteracyjnie testować i edytować kod serwera proxy interfejsu API w miarę jego tworzenia. Komunikaty śledzenia zawierają błędy kodu serwera proxy interfejsu API, w tym serwera proxy interfejsu API i konfiguracji zasad.

    Błędy związane z rozszerzeniami, które pojawiają się w narzędziu do śledzenia, zwykle nie zawierają zbyt wielu szczegółów poza informacją o tym, które wywołanie rozszerzenia nie powiodło się wraz z kodem błędu HTTP. Jeśli nie znajdziesz tu nic przydatnego, najlepiej poszukaj w nim dziennika używanego rozszerzenia.

  • Rozszerzenia generują wpisy logu w czasie działania. Dzienniki rozszerzeń są dostępne tylko dla administratorów organizacji.

    Te logi zawierają wpisy zwrócone przez zasób zewnętrzny, z którym rozszerzenie jest skonfigurowane do interakcji. Jeśli na przykład w rozszerzeniu są nieprawidłowo skonfigurowane dane logowania do zasobów zewnętrznych, prawdopodobnie tutaj pojawi się błąd.

    Dzienniki zawierają też wpisy z kodu wewnętrznego. Przeglądając dzienniki, pamiętaj, że niektóre wpisy nie mają związku z poprawianym błędem. Wpisy logu związane z rozszerzeniami zwykle zaczynają się od słowa details, jak w tym wpisie logu z rozszerzenia Cloud Pub/Sub:

    details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
    

Typy i przyczyny błędów

Przepływy przetwarzania żądań rozszerzeń z zasady ExtensionCallout na serwerze proxy interfejsu API przechodzą przez rozszerzenie do zasobu zewnętrznego, a następnie z powrotem. Dlatego w każdym z tych miejsc może wystąpić błąd.

Wyświetlane błędy mogą należeć do tych kategorii.

Błędy w konfiguracji rozszerzenia

To konfiguracja przeprowadzana przez administratora organizacji podczas dodawania rozszerzenia do środowiska.

Jeśli na przykład skonfigurujesz rozszerzenie Cloud Logging z nieprawidłowym identyfikatorem projektu Google Cloud, Google Cloud Logging zwróci do tego rozszerzenia błąd. Szczegółowe informacje o tych błędach znajdziesz zwykle w dzienniku rozszerzenia.

Dowody w narzędziu do śledzenia

W edytorze serwera proxy te błędy są zwykle wyświetlane jako błąd na poziomie 4xx lub 5xx. Edytor serwera proxy nie wyświetli jednak żadnych informacji o przyczynie błędu oprócz informacji, że rozszerzenie zwróciło błąd.

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Dowody w logach rozszerzeń

Szczegółowe informacje o tym rodzaju błędu znajdziesz we wpisach w dzienniku rozszerzenia. Poniższy komunikat o błędzie zwracany przez usługę Cloud Pub/Sub jest wynikiem nieprawidłowego identyfikatora projektu.

details: 'Project does not exist: example-test-12345'

Błędy w konfiguracji zasad ExtensionCallout

Te błędy występują, gdy zasada ExtensionCallout jest nieprawidłowo skonfigurowana – może to być wynik błędu składni konfiguracji zasad albo nieprawidłowych kluczy konfiguracyjnych lub wartości. W zależności od konfiguracji zasady te błędy mogą mieć 2 rodzaje:

  • Nieprawidłowe wartości ocenione przez zasób zewnętrzny

    Ten błąd może wystąpić, gdy błąd konfiguracji wydaje się prawidłowy w przypadku rozszerzenia, ale jest nieprawidłowy w przypadku zasobu zewnętrznego. Jeśli na przykład rozszerzenie przekaże do Cloud Spanner nieprawidłowy identyfikator bazy danych, Cloud Spanner zwróci błąd zarejestrowany w dzienniku rozszerzenia:

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    Ten błąd może też wystąpić w przypadku nieprawidłowej konfiguracji w formacie JSON w elemencie <Input> zasady. W przypadku niektórych rozszerzeń część pliku JSON jest przetwarzana przez rozszerzenie, a część jest przekazywana do zasobu. Na przykład plik JSON z konfiguracją rozszerzenia Cloud Logging zawiera obiekt metadata, którego zawartość jest przekazywana do Cloud Logging. Nieprawidłowe nazwy kluczy, takie jak typ zamiast type, mogą zwracać błędy z zasobu zewnętrznego, które są widoczne jako wpisy w dzienniku rozszerzenia:

    details: 'Resource type cannot be empty'
    
  • Nieprawidłowe wartości oceniane przez rozszerzenie

    Te błędy obejmują błędy składniowe w częściach kodu JSON ocenianych przez zasadę <Input>, literówki w nazwie działania w elemencie <Action> itp. Te błędy zwykle pojawiają się w narzędziu do śledzenia, ale nie ma ich w dziennikach rozszerzeń.

Dowody w narzędziu do śledzenia

W edytorze serwera proxy te błędy są zwykle wyświetlane jako błąd na poziomie 4xx lub 5xx. Edytor serwera proxy nie wyświetli jednak żadnych informacji o przyczynie błędu oprócz informacji, że rozszerzenie zwróciło błąd. Ten błąd pojawia się w narzędziu do śledzenia w przypadku literówki w nazwie działania w rozszerzeniu Cloud Firestore.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Dowody w logach rozszerzeń

Jeśli konfiguracja zasady powoduje błąd przetwarzania w zasobie zewnętrznym, zwykle jest on widoczny w dzienniku.

To błąd polegający na tym, że żądanie do zasobu zewnętrznego nie powiodło się z powodów, które nie są związane z rozszerzeniem.

Załóżmy na przykład, że dodajesz wiersz do bazy danych za pomocą rozszerzenia Cloud Spanner, ale wartość klucza podstawowego tego wiersza jest już używana w istniejącym wierszu. Cloud Spanner zwróci do rozszerzenia błąd, co spowoduje dodanie go do logu rozszerzenia.

Dowody w narzędziu do śledzenia

W edytorze serwera proxy te błędy są zwykle wyświetlane jako błąd na poziomie 4xx lub 5xx. Edytor serwera proxy nie wyświetli jednak żadnych informacji o przyczynie błędu oprócz informacji, że rozszerzenie zwróciło błąd.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Dowody w logach rozszerzeń

Dziennik zwykle zawiera wpisy z komunikatami z zasobu zewnętrznego. Poniższy komunikat logu z Cloud Spanner opisuje istniejący błąd podstawowej pary klucz-wartość.

details: 'Row [jonesy42] in table user already exists'