Debugowanie rozszerzenia

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Debugowanie rozszerzenia możesz przeprowadzić, korzystając z wiadomości widocznych w 2 miejscach: w narzędzie Trace i w logach rozszerzeń. Gdy rozszerzenie nie działa, rozpoznanie problemu może wymagać informacji z obu miejsc.

  • narzędziu do śledzenia Apigee Edge możesz testować i edytować kod serwera proxy interfejsu API w miarę jego tworzenia. Komunikaty z wykrywania błędów obejmują błędy z kodu serwera proxy interfejsu API, w tym konfiguracji serwera proxy interfejsu API i zasad.

    Błędy związane z rozszerzeniem, które pojawiają się w narzędziu śledzenia, zwykle nie zawierają zbyt wielu szczegółów, oprócz informacji o tym, który element rozszerzenia się nie powiódł, oraz kodu błędu HTTP. Jeśli nie widzisz tu nic przydatnego, sprawdź logi rozszerzenia, którego używasz.

  • Rozszerzenia generują wpisy do logów w czasie wykonywania. (logi rozszerzeń są dostępne tylko dla administratorów organizacji).

    Te dzienniki zawierają wpisy zwrócone przez zewnętrzny zasób, z którym rozszerzenie ma współpracować. Jeśli na przykład w rozszerzeniu nieprawidłowo skonfigurujesz dane logowania do zasobu zewnętrznego, błąd pojawi się tutaj.

    Dzienniki zawierają też wpisy z kodu wewnętrznego rozszerzenia. Pamiętaj, że niektóre wpisy w logach nie mają związku z poprawianym przez Ciebie błędem. Wpisy logowania związane z rozszerzeniem zwykle zaczynają się od słowa details, jak w tym wpisie logowania 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

Przetwarzanie żądania rozszerzenia odbywa się od zasady ExtensionCallout w serwerze proxy interfejsu API przez rozszerzenie do zasobu zewnętrznego, a potem z powrotem. Błąd może wystąpić w dowolnym z tych miejsc.

Błędy mogą należeć do tych kategorii:

Błędy w konfiguracji rozszerzenia

Jest to konfiguracja, którą administrator organizacji wykonuje podczas dodawania rozszerzenia do środowiska.

Jeśli na przykład skonfigurujesz rozszerzenie Cloud Logging z nieprawidłowym identyfikatorem projektu Google Cloud, Cloud Logging zwróci do niego błąd. Szczegóły tych błędów są zwykle dostępne w dzienniku rozszerzenia.

Dowody w narzędziu śledzenia

W edytorze proxy te błędy zwykle pojawiają się jako błąd na poziomie 4xx lub 5xx. Edytor proxy nie wyświetli żadnych szczegółowych informacji o przyczynie błędu, tylko że wystąpił błąd rozszerzenia.

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

Dowody w dziennikach rozszerzenia

Jeśli są dostępne szczegółowe informacje o takim błędzie, znajdziesz je w rekordach dziennika rozszerzenia. Ten komunikat o błędzie zwracany przez usługę Cloud Pub/Sub jest spowodowany nieprawidłowym identyfikatorem projektu.

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

Błędy w konfiguracji zasady ExtensionCallout

Te błędy występują, gdy polityka ExtensionCallout jest źle skonfigurowana z powodu błędu składni konfiguracji lub nieprawidłowych wartości lub kluczy konfiguracji. W zależności od konfiguracji zasady te błędy mogą występować w 2 formach:

  • nieprawidłowe wartości oceniane przez zasób zewnętrzny;

    Może się tak zdarzyć, gdy błąd konfiguracji był prawidłowy dla rozszerzenia, ale nieprawidłowy dla zasobu zewnętrznego. Jeśli na przykład rozszerzenie przekaże nieprawidłowy identyfikator bazy danych do Cloud Spanner, usługa Cloud Spanner zwróci błąd, który zostanie zapisany w logu rozszerzenia:

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

    Może się to zdarzyć też w przypadku nieprawidłowej konfiguracji JSON w elemencie <Input> zasady. W przypadku niektórych rozszerzeń część danych JSON jest przetwarzana przez rozszerzenie, a część jest przekazywana do zasobu. Na przykład konfiguracja rozszerzenia Cloud Logging w pliku konfiguracji JSON zawiera obiekt metadata, którego zawartość jest przekazywana do Cloud Logging. Nieprawidłowe nazwy kluczy, np. typ zamiast type, mogą powodować błędy w zasobach zewnętrznych, które pojawiają się jako wpisy w dzienniku rozszerzenia:

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

    Błędy te obejmują błędy składni w częściach elementu JSON <Input> ocenianych przez zasady, błędy pisowni nazwy działania w elemencie <Action> itp. Te błędy zwykle pojawiają się w narzędziu śledzenia, ale nie w dziennikach rozszerzenia.

Dowody w narzędziu śledzenia

W edytorze proxy te błędy zwykle pojawiają się jako błąd na poziomie 4xx lub 5xx. Edytor proxy nie wyświetli żadnych szczegółowych informacji o przyczynie błędu, tylko że wystąpił błąd rozszerzenia. Jeśli w rozszerzeniu Cloud Firestore wpiszesz niepoprawnie nazwę działania, w narzędziu Śledzenie pojawi się ten błąd:

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

Dowody w dziennikach rozszerzenia

Jeśli konfiguracja zasad spowoduje błąd przetwarzania w zasobie zewnętrznym, błąd ten zwykle pojawi się w dzienniku.

To błąd, który występuje, gdy żądanie do zasobu zewnętrznego nie zostało zrealizowane z powodów niezwiązanych z rozszerzeniem.

Wyobraź sobie na przykład, że używasz rozszerzenia Cloud Spanner, aby dodać wiersz do bazy danych, ale wartość klucza podstawowego wiersza jest już używana w istniejącym wierszu. Cloud Spanner zwróci błąd do rozszerzenia, które doda go do dziennika rozszerzenia.

Dowody w narzędziu śledzenia

W edytorze serwera proxy te błędy zwykle pojawiają się jako błąd na poziomie 4xx lub 5xx. Edytor proxy nie wyświetli żadnych szczegółowych informacji o przyczynie błędu, tylko ż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 dziennikach rozszerzenia

Dziennik zwykle zawiera wpisy z wiadomościami z zewnętrznego zasobu. Ten komunikat z dziennika usługi Cloud Spanner opisuje błąd wartości klucza podstawowego.

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