デバッグの使用

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

このセクションでは、デバッグ セッションの作成と管理を行い、Apigee UI と API を使用してリクエストとレスポンスのデータを表示する方法について説明します。

以前にダウンロードしたデバッグ セッションを表示して分析するには、Offline Debug を使用します。

デバッグ セッションを作成する

このツールの使い方は簡単です。デバッグ セッションを開始して、Apigee に対して API 呼び出しを行うと、UI にリクエスト データとレスポンス データが表示されます。

次のセクションで説明するように、Apigee UI または API を使用してデバッグ セッションを作成します。

Cloud コンソールの UI

Debug v2(新規)

デバッグ セッションを作成するには:

  1. Google Cloud コンソールにログインします。
  2. [プロキシ開発] > [API プロキシ] を選択します。
  3. デバッグする API プロキシを選択します。プロキシ エディタの [概要] ペインが表示されます。
  4. [デバッグ] タブをクリックします。
  5. [Start Debug Session] をクリックします。これにより、[Start debug session] ペインが表示されます。
  6. [Start debug session] ペインで次の操作を行います。

    1. デバッグ セッションを実行する環境を選択します。
    2. (省略可)[フィルタ] プルダウン リストから、作成するデバッグ セッションのすべてのトランザクションに適用するフィルタを選択します。デフォルトは None (All transactions) で、デバッグデータ内のすべてのトランザクションが含まれます。

      フィルタの使用方法については、デバッグ セッションでのフィルタの使用をご覧ください。組み込みフィルタの詳細については、定義済みフィルタの使用をご覧ください。

    3. [開始] をクリックします。

Apigee UI に [Debug session in progress] ビューが表示されます。

クリックして画像を拡大 新しいデバッグ セッション

デバッグ セッションでは、10 分間またはリクエストが 15 件キャプチャされるまでリクエストが記録されます。API を使用してデバッグ セッションを作成する場合は、10 分間の制限を調整できます。[Ends within] フィールドに、セッションの残り時間が表示されます。

デバッグ セッション用に選択した環境でデバッグしているプロキシにリクエストを送信するまで、[デバッグ] ペインに情報は表示されません。

リクエストを送信すると、[トランザクション] リストペインに表示されます。[トランザクション] リストは、5 秒ごとに更新されます。

クリックして画像を拡大 トランザクション リストのリクエスト

Debug v1

新しいプロキシ エディタでデバッグ セッションを作成するには:

  1. Google Cloud コンソールにログインします。
  2. [プロキシ開発] > [API プロキシ] を選択します。

  3. デバッグする API プロキシを選択します。プロキシ エディタの [概要] ビューが表示されます。

  4. ウィンドウの左上にある [デバッグ] タブをクリックします。
  5. [デバッグ] ペインの右上にある [Start Debug Session] をクリックします。これにより、[Start debug session] ダイアログが表示されます。

    [Start debug session] ダイアログ。

    ダイアログで操作を行う場合:

    1. デバッグ セッションを実行する環境を選択します。
    2. (省略可)[フィルタ] プルダウン リストから、作成するデバッグ セッションのすべてのトランザクションに適用するフィルタを選択します。デフォルトは None (All transactions) で、デバッグデータ内のすべてのトランザクションが含まれます。

      フィルタの使用方法については、デバッグ セッションでのフィルタの使用をご覧ください。 組み込みフィルタの詳細については、定義済みフィルタの使用をご覧ください。

    3. [開始] をクリックします。

Apigee UI に [Debug session in progress] ビューが表示されます。

進行中のデバッグ セッション

デバッグ セッションでは、10 分間またはリクエストが 15 件キャプチャされるまでリクエストが記録されます。API を使用してデバッグ セッションを作成する場合は、10 分間の制限を調整できます。[Ends within] フィールドに、セッションの残り時間が表示されます。

選択した環境でデバッグしているプロキシにリクエストを送信するまで、[デバッグ] ペインに情報は表示されません。

送信したリクエストが左側のペインの下部に表示されます。

[Start debug session] ダイアログ。

注: アクティブなデバッグ セッション中に、Apigee UI で別のセッションを開始できます。その場合は、[Start Debug Session] をもう一度クリックします。

従来の UI

従来のプロキシ エディタでデバッグ セッションを作成するには:

  1. Apigee UI にログインします。
  2. メインビューから [API Proxies] を選択します。
  3. デバッグする API プロキシを選択します。

    [概要] タブが表示されます。

  4. ページの右上にある [デバッグ] タブをクリックします。

    タブ

    [Debug] ビューが表示されます。

    [Start a debug session]、[Recent debug sessions]、[Send requests] の各ペインが表示されたデバッグビュー

  5. [Start a debug session] パネルで次の操作を行います。
    1. [Env] プルダウン リストから、デバッグする API プロキシの環境とリビジョン番号を選択します。
    2. 次の例は [Start a debug session] パネルを示しています。

      [Start Debug Session] ペイン

    3. (省略可)[フィルタ] プルダウン リストから、作成するデバッグ セッションのすべてのトランザクションに適用するフィルタを選択します。デフォルトは None で、これにはトレースデータ内のすべてのトランザクションが含まれます。

      フィルタの使用方法については、デバッグ セッションでのフィルタの使用をご覧ください。 組み込みフィルタの詳細については、定義済みフィルタの使用をご覧ください。

    4. [Start Debug Session] をクリックします。

      Apigee UI の [Debug details] パネルに、ID を含む現在のデバッグ セッションの詳細が表示されます。

      UI によりデバッグ セッションが作成されましたが、リクエストを送信しないとデータは収集されません。

      [Debug details] パネルでは、次の操作を行うことができます。

      アイコン 関数 説明
      ダウンロード アイコン ダウンロード アクティブ セッションのデバッグデータをダウンロードします。このデータはオフラインで表示できます。
      戻るアイコン 戻る 前のパネルに戻ります。ここで別のデバッグ セッションを開始できます。現在のデバッグ セッションはタイムアウトになるか、トランザクション数に達するまで継続します。
      削除アイコン 削除 現在選択されているデバッグ セッションのデータを削除します。セッションのデータは削除されますが、セッションは停止しません。

      UI で開始したデバッグ セッションのデフォルトのタイムアウトは 10 分です。これは API で開始したセッションとは異なります。

      [Start Debug Session] をクリックすると直ちに時計が動き始めます。収集するデータ量を最大にするには、次のステップが終わるまで待機してから [Start Debug Session] をクリックします。

  6. [Send Requests] パネルで、以下の操作を行います。
    1. [URL] フィールドに、リクエストの送信先となるエンドポイントを入力します。必要に応じて、URL にクエリ文字列パラメータを追加します。GET 以外のリクエストは送信できません。
      エンドポイント URL の見つけ方
      1. [管理] > [環境] > [グループ] の順に移動します。
      2. この URL は、デバッグ セッションを実行する環境のホスト名です。
    2. [Send Requests] パネルには、UI ベースのリクエストのデータのみが表示されます。ただし、UI で開始していないリクエストのデータも記録されています。

    3. [送信] をクリックします。

      指定された URL にリクエストが送信されます。[送信] をクリックするたびに、[Debug details] パネルでリクエストがログに記録されます。

      次の例は、成功した複数のリクエストを示しています(HTTP ステータス コード 200 が返されています)。

      キャプチャされたデバッグ リクエスト

      [コピー] をクリックして、今後の参照またはクエリ用のトレース ID をコピーします。

      さらに UI では、[Send Requests] パネルの [Transaction Map] セクションと [Phase Details] セクションにトレースデータが表示されます。また、次の例のように [Proxy Endpoint]、[Request Headers]、[Request Content]、[Properties] の各セクションの値が自動的に入力されます。

      キャプチャされたデバッグ リクエスト

      フェーズ、トランザクション マップ、[Send Requests] ビューのその他のセクションの詳細については、デバッグの読み取り方法をご覧ください。

    デバッグ セッションがアクティブになり、すべてのリクエストのデータが記録されます(除外されている場合を除く)。セッションは、タイムアウトに達するか、セッションで記録されたリクエスト数が上限を超えるまで、アクティブな状態が維持されます。

  7. UI では、任意の数のデバッグ セッションを作成できます。詳細については、別のデバッグ セッションを開始するをご覧ください。

API

API を使用してデバッグ セッションを作成するには、次のリソースに POST リクエストを発行します。

https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/apis/$API/revisions/$REV/debugsessions

必要に応じて、次の処理を行うこともできます。

次の例は、API を使用してデバッグ セッションを作成する方法を示しています。

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions" \
      -X POST \
      -H "Authorization: Bearer $TOKEN"
    

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

レスポンスの例を次に示します。

{
      "name":"56382416-c4ed-4242-6381-591bbf2788cf",
      "validity":300,
      "count":10,
      "tracesize":5120,
      "timeout":"600"
    }

セッション継続時間または最大リクエスト数に達するまで、API プロキシに対する後続のリクエストが評価されます。また、デバッグ セッション データに格納されることもあります。

詳細については、デバッグ セッション API を作成するをご覧ください。

API を使用したデバッグ セッションの長さの設定

API を使用してデバッグ セッションの長さを設定するには、デバッグ セッション作成リクエストに次のものをペイロードとして含めます。

{
      "timeout":"debug_session_length_in_seconds"
    }

次の例は、42 秒のデバッグ セッションを作成します。

curl https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions"
      -X "POST" \
      -H "Authorization: Bearer $TOKEN" \
      -d ' {
        "timeout":"42"
      } '

セッションの timeout は、デバッグ セッションの作成リクエストでのみ設定できます。セッションの作成後にセッションの長さを変更することはできません。

timeout のデフォルト値は 300(5 分)です。最大値は 600 秒(10 分)です。

プロキシ URL をコピーする

プロキシ URL を使用して、API プロキシにリクエストを送信します。

Cloud コンソールの UI

Debug v2(新規)

プロキシ URL を見つけてコピーするには:

  1. [Debug session] ペインで、[URL] フィールドの [コピー] をクリックします。
  2. [Debug session] が開いていない場合:
    1. Google Cloud コンソールで、[管理] > [環境] > [Environment Groups] に移動します。
    2. この URL は、デバッグ セッションを実行する環境のホスト名です。選択してコピーします。

別のプロキシ URL を選択するには:

  1. [Debug session] ペインで、[URL] フィールドの [編集] をクリックします。
  2. 必要な変更を行い、[更新] をクリックします。
  3. [Debug session] が開いていない場合:
    1. プロキシ URL を見つけます。
    2. [その他] をクリックし、 [編集] をクリックします。
    3. 必要な変更を行い、[更新] をクリックします。

Debug v1

プロキシ URL を見つけてコピーするには:

  1. Google Cloud コンソールで、[管理] > [環境] > [Environment Groups] に移動します。
  2. この URL は、デバッグ セッションを実行する環境のホスト名です。選択してコピーします。

プロキシ URL を編集するには:

  1. プロキシ URL を見つけます。
  2. [その他] をクリックし、 [編集] をクリックします。
  3. 必要な変更を行い、[更新] をクリックします。

従来の UI

エンドポイント URL を見つけてコピーするには:

  1. Apigee UI で、[管理] > [環境] > [グループ] に移動します。Google Cloud コンソールの [管理] > [環境] > [Environment Groups] ページにリダイレクトされます。
  2. この URL は、デバッグ セッションを実行する環境のホスト名です。選択してコピーします。

ターゲット URL を編集するには:

  1. エンドポイント URL を見つけます。
  2. [その他] をクリックし、 [編集] をクリックします。
  3. 必要な変更を行い、[更新] をクリックします。

UI で別のデバッグ セッションを開始する

UI では、任意の数のデバッグ セッションを作成できます。

Cloud コンソールの UI

アクティブなデバッグ セッション中に、Apigee UI で別のセッションを開始できます。この操作を行うには、[Debug session] ペインで [閉じる] をクリックします。

クリックして大きい画像を表示 閉じて [Start a debug session] パネルに戻る

UI に [Start a debug session] パネルが表示され、新しいデバッグ セッションを開始できます。

従来の UI

アクティブなデバッグ セッション中に、Apigee UI で別のセッションを開始できます。この操作を行うには、[Debug details] パネルで戻る矢印アイコン()をクリックします。

戻る矢印で [Start a debug session] パネルに戻る

UI に [Start a debug session] パネルが表示され、新しいデバッグ セッションを開始できます。

デバッグ セッションが終了するタイミング

アクティブなデバッグ セッションを途中で停止することはできません。ただし、デバッグ セッション データを削除するで説明されているように、アクティブ セッションのデータを削除できます。

デバッグ セッションを作成すると、次の 2 つのプロパティによってセッションが終了するタイミングが決まります。

  • timeout: セッション中にデータを収集する期間。 デフォルトの長さは、セッションの開始方法(UI または API)によって異なります。最大値は 600 秒(または 10 分)です。
  • count: Message Processor ごとに 1 回のセッションで記録されるリクエストの最大数。ほとんどのクラスタで Message Processor の数は可変であるため、カウントの影響は予測できません。この設定のカスタマイズはおすすめしません。

タイムアウトまたはカウントに到達すると、その Message Processor のデバッグ セッションが終了します。

デバッグ セッションの状態を説明する際に、次の用語を使用しています。

  • アクティブ セッション: タイムアウトに達していないか、カウントを超えていないデバッグ セッション。アクティブ セッションでは、フィルタで除外されていないリクエストのデータが記録されます。
  • 完了セッション: タイムアウトに達したか、カウントを超過したデバッグ セッション。完了セッションでは新しいリクエストのデータは記録されません。セッションが終了してから 24 時間以内にデータが削除されます。

デバッグ セッションの読み取り方法

このセクションでは、デバッグ セッションの概要について説明します。

関連項目:

Cloud コンソールの UI

Debug v2(新規)

デバッグツールには、[トランザクション] ペインと [Phase details] ペインという主要な 2 つの部分があります。

  • [トランザクション] ペインでは、アイコンを使用して、API プロキシ トランザクション中に発生した重要なステップ(ポリシー実行、条件ステップ、遷移など)をマーキングします。アイコンにマウスカーソルを合わせると、概要情報が表示されます。リクエスト フローのステップはトランザクション マップの一番上に表示され、下部にはレスポンス フローのステップが表示されます。
  • [Phase details] ペインには、設定済みの変数または読み取られた変数、リクエスト ヘッダーやレスポンス ヘッダーなど、プロキシの内部処理に関する情報が一覧表示されます。アイコンをクリックすると、そのステップのフェーズの詳細が表示されます。

Debug v1

このバージョンのデバッグツールでは、ガントチャートを使用して、リクエストとレスポンスのステップが表示されます。

従来の UI

デバッグツールには、トランザクション マップとフェーズの詳細という主要な 2 つの部分があります。

  • トランザクション マップでは、アイコンを使用して、API プロキシ トランザクション中に発生した重要なステップ(ポリシー実行、条件ステップ、遷移など)にマークを付けます。アイコンにマウスカーソルを合わせると、概要情報が表示されます。リクエスト フローのステップはトランザクション マップの一番上に表示され、下部にはレスポンス フローのステップが表示されます。
  • ツールの [Phase details] セクションには、設定済みの変数または読み取られた変数、リクエスト ヘッダーやレスポンス ヘッダーなど、プロキシの内部処理に関する情報が一覧表示されます。アイコンをクリックすると、そのステップのフェーズの詳細が表示されます。

[トランザクション] ペイン

[トランザクション] ペインには、リクエストとレスポンスのステップが表示されます。

Cloud コンソールの UI

Debug v2(新規)

以下に、主なプロキシ処理セグメントにラベルを付けた、デバッグツールの [トランザクション] ペインのサンプルを示します。

クリックして大きい画像を表示 プロキシ リクエスト フローの開始から、ターゲット リクエスト フローの開始、ターゲット レスポンス フローの開始、プロキシ レスポンス フローの開始、プロキシ ポスト クライアント フローの開始までを示すデバッグ図

Debug v1

[デバッグ] ビューでトランザクションの詳細(リクエストとレスポンス)を表示するには、トランザクションの行をクリックして、右側のペインにガントチャートを表示します。このペインに、リクエストとレスポンスのステップが表示されます。

右側のペインのトランザクション ステップのガントチャート。

図の横軸は各ステップが発生した時間(ミリ秒単位)を示しています。各ステップは、ステップの開始時間から終了時間までの長方形で表されます。

[デバッグ] ペインを進めるには、デバッグペインの右下にある [戻る] ボタンと [次へ] ボタンを使用します。クリックすると次のようになります。

  • [戻る] をクリックすると、選択した行をグラフ内の前のステップに移動します。
  • [次へ] をクリックすると、選択した行をグラフ内の次のステップに移動します。

上記の例では、レスポンスで実行される 2 つのポリシーがグラフに表示されています。

  • ResponsePayload
  • Add CORS

いずれかのステップをクリックすると、その詳細が表示されます。 たとえば、Add CORS ポリシーをクリックすると、以下の詳細がガントチャートの横に表示されます。

Add CORS ポリシーの詳細。

ポリシー構成を変更する場合は、[開発] をクリックして [開発] ビューに切り替えます。ここで、レスポンス PostFlow には同じ 2 つのポリシーが表示されます。

デバッグ セッションに関連する [開発] タブを表示する。

従来の UI

以下に、主なプロキシ処理セグメントにラベルを付けたデバッグツール マップのサンプルを示します。

デバッグツールのトランザクション マップ

プロキシ リクエスト フローの開始から、ターゲット リクエスト フローの開始、ターゲット レスポンス フローの開始、プロキシ レスポンス フローの開始、プロキシ ポスト クライアント フローの開始までを示すデバッグ図

[トランザクション] ペインの凡例

[トランザクション] ペインに表示されるアイコンは次のとおりです。

Cloud コンソールの UI

Debug v2(新規)

このセクションでは、[トランザクション] ペインのアイコンについて説明します。

ポリシー アイコン

ポリシーのタイプごとに一意のアイコンがあります。これらのアイコンにより、ポリシーが適切な順序で実行されているかどうかと、ポリシーの実行が成功したのかどうかを確認できます。ポリシーのアイコンをクリックすると、ポリシーの実行結果と、それが想定した結果と一致しているかどうかを確認できます。たとえば、メッセージが適切に変換されているかどうか、またはメッセージがキャッシュに保存されているかどうかを確認できます。

標準ポリシーを使用すると、API を拡張して、トラフィックの制御、パフォーマンスの向上、セキュリティの適用を行い、コードの記述やバックエンド サービスの変更を必要とせずに、API の有用性を高めます。

拡張可能なポリシーを使用すると、API プロキシにカスタム ロジックを追加できます。これらのポリシーを使用して、標準ポリシーでは提供されていない機能を追加できます。

ポリシーとカテゴリの詳細については、ポリシー リファレンスの概要をご覧ください。

テーブルをフィルタするには:

  • 1 つのポリシータイプまたはポリシー カテゴリを選択します。
  • [名前] 列ヘッダーをクリックして、ポリシー名でテーブルを並べ替えます。
  • キーワードを入力してポリシー名を検索します。

ポリシータイプ

ポリシー カテゴリ

アイコン 名前 タイプ カテゴリ
manage_search ParseDialogflowRequest ポリシー 拡張可能 ダイアログ フロー
chat_add_on SetDialogflowResponse ポリシー 拡張可能 ダイアログ フロー
stacked_line_chart DataCapture ポリシー 拡張可能 拡張機能
display_external_input ExternalCallout ポリシー 標準 拡張機能
flowsheet FlowCallout ポリシー 拡張可能 拡張機能
automation IntegrationCallout ポリシー 拡張可能 拡張機能
JavaCallout ポリシー アイコン JavaCallout ポリシー 拡張可能 拡張機能
JavaScript ポリシー アイコン JavaScript ポリシー 拡張可能 拡張機能
add_notes MessageLogging ポリシー 拡張可能 拡張機能
chat_paste_go PublishMessage ポリシー 標準 拡張機能
PythonScript ポリシー アイコン PythonScript ポリシー 拡張可能 拡張機能
integration_instructions ServiceCallout ポリシー 拡張可能 拡張機能
automation SetIntegrationRequest ポリシー 拡張可能 拡張機能
waterfall_chart TraceCapture ポリシー 拡張可能 拡張機能
cloud_done AccessEntity ポリシー 拡張可能 メディエーション
account_tree AssertCondition ポリシー 標準 メディエーション
edit_square AssignMessage ポリシー 拡張可能 メディエーション
login ExtractVariables ポリシー 拡張可能 メディエーション
GraphQL ポリシー アイコン GraphQL ポリシー 標準 メディエーション
sync_alt HTTPModifier ポリシー 標準 メディエーション
sync_alt JSONtoXML ポリシー 標準 メディエーション
account_tree KeyValueMapOperations ポリシー 拡張可能 メディエーション
sync_alt MonetizationLimitsCheck ポリシー 拡張可能 メディエーション
cloud_done OASValidation ポリシー 標準 メディエーション
report RaiseFault ポリシー 標準 メディエーション
sync_alt ReadPropertySet ポリシー 標準 メディエーション
cloud_done SOAPMessageValidation ポリシー 標準 メディエーション
sync_alt XMLtoJSON ポリシー 標準 メディエーション
cloud_done XSLTransform ポリシー 拡張可能 メディエーション
lock AccessControl ポリシー 標準 セキュリティ
security BasicAuthentication ポリシー 拡張可能 セキュリティ
connect_without_contact CORS ポリシー 標準 セキュリティ
lock DecodeJWS ポリシー 拡張可能 セキュリティ
lock DecodeJWT ポリシー 標準 セキュリティ
passkey DeleteOAuthV2Info ポリシー 拡張可能 セキュリティ
lock GenerateSamlAssertion ポリシー 拡張可能 セキュリティ
lock GenerateJWS ポリシー 拡張可能 セキュリティ
lock GenerateJWT ポリシー 拡張可能 セキュリティ
passkey GetOAuthV2Info ポリシー 拡張可能 セキュリティ
lock HMAC ポリシー 標準 セキュリティ
security JSONThreatProtection ポリシー 拡張可能 セキュリティ
passkey OAuthV2 ポリシー 拡張可能 セキュリティ
security RegularExpressionProtection ポリシー 拡張可能 セキュリティ
passkey RevokeOAuthV2 ポリシー 拡張可能 セキュリティ
passkey SetOAuthV2Info ポリシー 拡張可能 セキュリティ
lock ValidateSamlAssertion ポリシー 拡張可能 セキュリティ
key VerifyAPIKey ポリシー 拡張可能 セキュリティ
passkey VerifyIAM ポリシー 拡張可能 セキュリティ
lock VerifyJWS ポリシー 拡張可能 セキュリティ
lock VerifyJWT ポリシー 標準 セキュリティ
security XMLThreatProtection ポリシー 拡張可能 セキュリティ
cached InvalidateCache ポリシー 拡張可能 トラフィック管理
cached LookupCache ポリシー 拡張可能 トラフィック管理
cached PopulateCache ポリシー 拡張可能 トラフィック管理
bar_chart_4_bars Quota ポリシー 拡張可能 トラフィック管理
repartition ResetQuota ポリシー 拡張可能 トラフィック管理
cached ResponseCache ポリシー 拡張可能 トラフィック管理
emergency_home SpikeArrest ポリシー 標準 トラフィック管理

その他のアイコン

次の表で、[トランザクション] ペインに表示されるその他のアイコンの意味について説明します。これらのアイコンは、プロキシフロー全体で重要な処理ステップに表示されます。

テーブルをフィルタするには:

  • アイコンタイプを 1 つ選択します。
  • [名前] 列ヘッダーをクリックして、アイコン名でテーブルを並べ替えます。
  • キーワードを入力してアイコン名を検索します。

アイコンタイプ

アイコン 名前 説明
monitor クライアント アプリ 標準トランザクション API プロキシの ProxyEndpoint にリクエストを送信するクライアント アプリ。
circle 遷移エンドポイント 標準トランザクション この円は、プロキシフローの遷移エンドポイントを示します。このアイコンは、リクエストがクライアントから到着するとき、リクエストがターゲットに送信されるとき、レスポンスがターゲットから戻ってくるとき、レスポンスがクライアントに戻されるときに表示されます。
stat_0 フロー セグメント 標準トランザクション

このダイヤモンドは、API プロキシフロー内のフロー セグメントの開始を示します。フロー セグメントは、ProxyEndpoint リクエスト、TargetEndpoint リクエスト、TargetEndpointレスポンス、ProxyEndpoint レスポンスです。セグメントには、PreFlow、条件付きフロー、PostFlow があります。

詳細については、条件付きフローをご覧ください。

true 条件アイコン true 条件付きフロー 標準トランザクション

true と評価された条件付きフロー(true と評価された if ステートメントなど)。条件付きフローの概要については、条件付きフローをご覧ください。

一部の条件は Apigee で生成されるので注意してください。たとえば、次の式は、Apigee が ProxyEndpoint でエラーが発生したかどうかを確認するために使用されます。

((error.state equals PROXY_REQ_FLOW) or (error.state equals PROXY_RESP_FLOW))

false 条件アイコン false 条件付きフロー 標準トランザクション

false と評価された条件付きフロー。条件付きフローの概要については、条件付きフローをご覧ください。

一部の条件は Apigee で生成されるので注意してください。たとえば、次の式は、Apigee が TargetEndpoint でエラーが発生したかどうかを確認するために使用されます。

(((error.state equals TARGET_REQ_FLOW) or (error.state equals TARGET_RESP_FLOW)) or ((error.state equals REQ_SENT) or (error.state equals RESP_START)))

フローの情報アイコン フローの情報 標準トランザクション API プロキシの実行に関するコンテキスト情報を表します。情報、フロー内のポイントによって異なります。プロキシ構成の詳細、現在の実行状態(例: PreFlow、PostFlow、フローフック)、ポリシー実行の詳細、ポリシー実行中に入力された変数など、その時点でのプロキシの特定の状態を示す詳細情報が示されます。
done_all フローの実行 標準トランザクション フロー実行の開始または終了にマークを付けて、個々のフロー セグメントのタイムラインを示し、フローの境界を視覚的に区切り、フロー実行の順序を示します。
commit フロー処理 標準トランザクション フロー内のアクティブな処理を示し、ポリシーとフローロジックが実行される期間を表します。
bar_chart Apigee Analytics でキャプチャされたデータ 標準トランザクション 分析アクションがバックグラウンドで実行されていることを示します。
location_on バックエンド サービス 標準トランザクション リクエストを受信するバックエンド サービス。API プロキシによって呼び出されるバックエンド ターゲット。
無効アイコン 無効 ステップのステータス ポリシーが無効になっているときに、ポリシーのアイコンに表示されます。ポリシーは公開 API で無効にすることができます。API プロキシ構成リファレンスをご覧ください。
エラーアイコン エラー ステップのステータス ポリシーのステップ条件が false と評価されたときにポリシー アイコンに表示されます(フロー変数での条件を参照)。また、RaiseFault ポリシーが実行されるたびに RaiseFault ポリシー アイコンに表示されます。
スキップ アイコン スキップ ステップのステータス ステップ条件が false と評価されたためにポリシーが実行されなかったときに、ポリシー アイコンに表示されます。詳しくは、フロー変数の条件をご覧ください。

Debug v1

このバージョンでは、ガントチャートを使用してリクエストとレスポンスのステップが表示されます。凡例は表示されません。

従来の UI

次の表で、トランザクション マップに表示されるアイコンの目的について説明します。これらのアイコンは、プロキシフロー全体で重要な処理ステップにそれぞれマークを付けます。

トランザクション マップ アイコン

クライアント アプリのアイコン API プロキシの ProxyEndpoint にリクエストを送信するクライアント アプリ。
遷移エンドポイントのアイコン この円は、プロキシフローの移行中のエンドポイントを示します。このアイコンが表示されるのは、リクエストがクライアントから到着するとき、リクエストがターゲットに送信されるとき、レスポンスがターゲットから戻ってくるとき、レスポンスがクライアントに戻されるときです。
フロー セグメントのアイコン

この縦長バーは、API プロキシのフロー内のフロー セグメントの開始が示します。各フロー セグメントは、ProxyEndpoint リクエスト、TargetEndpoint リクエスト、TargetEndpoint レスポンス、ProxyEndpoint レスポンスです。セグメントには、PreFlow、条件フロー、および PostFlow が含まれています。

詳細については、フローの構成をご覧ください。

分析アイコン

分析アクションがバックグラウンドで実行されていることを示します。

true 条件アイコン

true と評価された条件付きフロー。条件付きフローの概要については、フローの構成をご覧ください。

一部の条件は Apigee で生成されるので注意してください。たとえば、次の式は、Apigee が ProxyEndpoint でエラーが発生したかどうかを確認するために使用されます。

((error.state equals PROXY_REQ_FLOW) or (error.state equals PROXY_RESP_FLOW))
false 条件アイコン

false と評価された条件付きフロー。条件付きフローの概要については、フローの構成をご覧ください。

一部の条件は Apigee で生成されるので注意してください。たとえば、次の式は、Apigee が TargetEndpoint でエラーが発生したかどうかを確認するために使用されます。

(((error.state equals TARGET_REQ_FLOW) or (error.state equals TARGET_RESP_FLOW)) or ((error.state equals REQ_SENT) or (error.state equals RESP_START)))

xml to json アイコン

割り当てアイコン

ポリシー。ポリシーのタイプごとに一意のアイコンがあります。これは、AssignMessage ポリシーのアイコンです。これらのアイコンにより、ポリシーが適切な順序で実行されているかどうかと、ポリシーの実行が成功したか失敗したかを確認できます。ポリシーのアイコンをクリックすると、ポリシーの実行結果と、その結果が予期されていた結果であるかどうかを確認できます。たとえば、メッセージが適切に変換されているかどうか、またはメッセージがキャッシュされているかどうかを確認できます。

適切に実行されているポリシーはチェックマークで明確に示されます。エラーの場合は、赤色の感嘆符がアイコンに表示されます。

サーバー アイコン API プロキシによって呼び出されるバックエンド ターゲット。
ミリ秒アイコン タイムラインには、処理の完了までにかかった時間(ミリ秒)が示されます。経過時間セグメントを比較すると、実行に最も時間がかかっている、API 呼び出しの速度を低下させているポリシーを特定できます。
イプシロン アイコン イプシロンは、ミリ秒より短い時間を表します。
無効アイコン

無効。ポリシーが無効になっているときに、ポリシーのアイコンに表示されます。ポリシーは公開 API で無効にすることができます。API プロキシ構成リファレンスをご覧ください。

エラーアイコン エラー。ポリシー ステップの条件が false と評価されたときに、ポリシー アイコンに表示されます(フロー変数と条件を参照)。また、RaiseFault ポリシーが実行されるたびに RaiseFault ポリシー アイコンに表示されます。
スキップ アイコン スキップ。ステップ条件が false と評価されたために実行されなかったポリシーのアイコンにこれが表示されます。 詳しくは、フロー変数と条件をご覧ください。

[Phase details] ペイン

[Phase details] ペインには、各処理ステップにおけるプロキシの状態が表示されます。

Cloud コンソールの UI

Debug v2(新規)

フェーズの詳細ペインには、各処理ステップにおけるプロキシの状態が表示されます。ここでは、表示される詳細情報の一部について説明します。選択されているステップの詳細を確認するには、デバッグツールで任意のアイコンをクリックするか、> [次へ] または < [戻る] ボタンを使用してステップ間を移動します。

次の表で、[Phase details] ペインに表示される詳細情報について説明します。

フェーズの詳細 説明
変数

ポリシーによって値が読み取られ、割り当てられたフロー変数の一覧を表示します。フロー変数の使用もご覧ください。

リクエスト ヘッダー HTTP リクエスト ヘッダーの一覧を表示します。
リクエスト コンテンツ HTTP リクエスト本文を表示します。
プロパティ プロパティは、API プロキシの内部状態を表します。デフォルトでは表示されません。
ターゲット エンドポイント 実行対象として選択された TargetEndpoint を示します。
レスポンス ヘッダー HTTP レスポンス ヘッダーの一覧を表示します。
レスポンス コンテンツ HTTP レスポンスの本文を表示します。

Debug v1

ガントチャートのステップをクリックすると、フェーズの詳細が表示されます。または、> [次へ] または < [戻る] ボタンを使用して、デバッグ セッションを移動することもできます。

従来の UI

このツールの [Phase Details] 部分では、各処理ステップでのプロキシの状態に関する情報が表示されます。以下は、[Phase Details] に表示される詳細の一部です。選択されているステップの詳細を確認するには、デバッグツールで任意のアイコンをクリックします。ステップ間を移動するには、[次へ] または [戻る] ボタンを使用します。

フェーズの詳細 説明
プロキシ エンドポイント 実行するために選択された ProxyEndpoint フローを示します。API プロキシには、名前付きのプロキシ エンドポイントが複数含まれていることがあります。
変数

ポリシーによって値が読み取られ、割り当てられたフロー変数の一覧を表示します。フロー変数の使用もご覧ください。

:

  • 等号(=)は、変数に割り当てられた値を示します。
  • 不等号(≠)は、値が読み取り専用であるか、ポリシー実行中にエラーが発生したために変数に値が割り当てられなかったことを示します。
  • 空のフィールドは、変数値が読み取られたことを示します。
リクエスト ヘッダー HTTP リクエスト ヘッダーの一覧を表示します。
リクエスト コンテンツ HTTP リクエスト本文を表示します。
プロパティ プロパティは、API プロキシの内部状態を表します。デフォルトでは表示されません。
ターゲット エンドポイント 実行対象として選択された TargetEndpoint を示します。
レスポンス ヘッダー HTTP レスポンス ヘッダーの一覧を表示します。
レスポンス コンテンツ HTTP レスポンスの本文を表示します。
PostClientFlow リクエスト元のクライアント アプリにリクエストが返された後に実行される PostClientFlow の情報を表示します。PostClientFlow に追加できるのは MessageLogging ポリシーのみです。現在、PostClientFlow は主に、レスポンス メッセージの開始と終了のタイムスタンプの間隔を測定するために使用されています。

タイムライン

タイムラインでは、処理の完了にかかった時間(ミリ秒)が示されます。経過時間セグメントを比較すると、API 呼び出しの速度を低下させている実行に最も時間のかかっているポリシーを識別できます。

Epsilon(イプシロン)では、ミリ秒より短いタイムスパンが示されます。

Cloud コンソールの UI

Debug v2(新規)

クリックして大きい画像を表示 Debug v2 UI のタイムライン

Debug v1

クリックして大きい画像を表示 Debug v1 UI のタイムライン

従来の UI

クリックして大きい画像を表示 従来の UI のタイムライン

グループの展開と折りたたみ

このセクションでは、[トランザクション] ペインでグループを展開/折りたたむ方法について説明します。

Cloud コンソールの UI

Debug v2(新規)

リクエストとレスポンスのトランザクション ステップは、[開発] タブで以前構成した方法に沿って共有フローごとにグループ化されます。たとえば、プロキシ前、プロキシ後、ターゲット前、ターゲット後などです。

各グループには、関連するポリシー、条件、共有フロー、フロー情報が明示されます。

共有フローは、デフォルトでグループ化され、折りたたまれています。

[トランザクション] ペインでは、次のアクションを実行できます。

項目 名前 説明
[すべて展開] スライダー
<img <="" alt="collapse all slider" class="screenshot" src="/static/apigee/docs/api-platform/debug/images/collapse_all_slider.png" td="" width="" />
すべて展開
すべて折りたたむ
すべてのグループを展開/折りたたみます。
グループの展開アイコン
グループの折りたたみアイコン
展開
折りたたむ
1 つのグループを展開/折りたたみます。

関連項目:

Debug v1

このバージョンでは、グループを展開/折りたたむことはできません。

従来の UI

このバージョンでは、グループを展開/折りたたむことはできません。

検索を使用すると、リクエストまたはレスポンス内の単語や語句を検索できます。

Cloud コンソールの UI

Debug v2(新規)

検索を使用すると、リクエストまたはレスポンス内の単語や語句を検索できます。

次の点にご注意ください。

  • 検索では大文字と小文字が区別されません。
  • 検索は、単一のトランザクションに適用されます。つまり、デバッグ セッション全体のすべてのトランザクションを検索するわけではありません。
  • 検索すると折りたたまれたセクションが展開されますが、[表示オプション] の選択で除外したノードの情報は表示されません。

検索方法:

  1. 検索ボックスにテキストを入力します。
  2. Enter キーを押します。

    [トランザクション] ペインと [Phase Details] ペインに、検索結果がハイライト表示されます。

  3. keyboard_arrow_up [戻る] または keyboard_arrow_down [次へ] ボタンをクリックして、次または前のステップに移動します。
クリックして大きい画像を表示 Debug v2 UI の検索結果

Debug v1

このバージョンでは検索できません。

従来の UI

このバージョンでは検索できません。

ズーム

ズームを使用すると、[トランザクション] ペインの表示を制御できます。

Cloud コンソールの UI

Debug v2(新規)

ズームでは、次のように [トランザクション] ペインの表示を制御します。

クリックして大きい画像を表示 デバッグ v2 のズーム制御
アイコン 説明
100% 現在のズームレベル。デフォルトは 100% です。
fit_screen 画面に合わせる
zoom_in ズームイン
zoom_out ズームアウト
youtube_searched_for ズームのリセット

Debug v1

このバージョンではズームを使用できません。

従来の UI

このバージョンではズームを使用できません。

デバッグツールを使用してデバッグする

Debug を使用すると、API プロキシに関する多くの内部情報を確認できます。例:

  • ポリシーが正しく実行されているか、失敗したかを一目で確認できます。
  • たとえば、Analytics ダッシュボードで、1 つの API のパフォーマンスが異常に低下していることに気づいたとします。この場合、Debug を使用して、ボトルネックが発生場所を特定できます。Debug では、各処理ステップの完了に要した時間がミリ秒単位で示されます。1 つのステップに時間がかかりすぎていることが判明した場合は、是正処置を取ることができます。
  • バックエンドに送信されているヘッダーや、ポリシーによって設定された変数などを確認できます。
  • ベースパスを検証することで、ポリシーによってメッセージが正しいサーバーにルーティングされていることを確認できます。

デバッグ セッションでのデータのフィルタリング

デバッグ セッションを作成するときに、セッションにフィルタを追加すると、必要なデータのみが Apigee から返されるようになります。フィルタは、Apigee がリクエスト メッセージとレスポンス メッセージの評価で使用する条件文です。これにより、デバッグデータをデバッグ セッションに含める必要があるかどうかが決まります。たとえば、HTTP レスポンス コードが 599 未満のリクエストを除外できます。また、リクエストの値とカスタム変数を比較することもできます。

次の点にご注意ください。

  • フィルタで除外され、デバッグ セッションに含まれないリクエストは、デバッグ セッションの最大トランザクション数にカウントされません。
  • Apigee では、クエリ文字列にフィルタを追加できません。
  • セッションの開始後にデバッグ セッションにフィルタを追加することはできません。フィルタを追加するには、デバッグ セッションを作成する必要があります。

フィルタの使用

次のセクションで説明するように、Apigee UI または API を使用してデバッグ セッションを作成するときにフィルタを使用します。

Cloud コンソールの UI

UI でデバッグ セッションを作成するときに、[フィルタ] プルダウン リストから、[Start a debug session] パネルに適用する定義済みフィルタを選択できます。また、[カスタム フィルタ] を選択し、フィルタ構文を使用して独自のフィルタを作成することもできます。

従来の UI

UI でデバッグ セッションを作成するときに、[フィルタ] プルダウン リストから、[Start a debug session] パネルに適用する定義済みフィルタを選択できます。また、[カスタム フィルタ] を選択し、フィルタ構文を使用して独自のフィルタを作成することもできます。

API

API を使用してフィルタを含むデバッグ セッションを作成するには、デバッグ セッション作成リクエストにペイロードとして次のものを含めます。

{
  "filter":"filter_body"
}

フィルタの作成の詳細については、フィルタ構文をご覧ください。

次の例では、ヘッダー A42、ヘッダー B43、または障害コードが ExpectedEOF であるトランザクションのみを含むデバッグ セッションを作成しています。

curl -H "Authorization: Bearer $TOKEN" -X "POST"
  https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions
  -d ' {
    "filter":"(request.header.A == '42' && request.header.B == '43') || fault.code == 'jsonparser.ExpectedEOF'"
  } '

フィルタは、デバッグ セッション作成リクエストでのみ定義できます。既存のデバッグ セッションにフィルタを追加することはできません。また、アクティブなデバッグ セッションからフィルタを削除することもできません。

フィルタ構文

フィルタは、Apigee の条件と同じ構文をサポートしています(詳細は条件リファレンスをご覧ください)。次のものが含まれます。

また、フィルタは、フロー変数のリファレンスに記載されているすべてのフロー変数とカスタム変数にアクセスできます。次の例は、フィルタで使用できるフロー変数の例を示しています。

# Response codes:
  response.status.code <= 599
  response.status.code >=301 && response.status.code <=420

# Requests/responses:
  request.verb == "GET"
  request.header.A == 'B' || request.queryparam.X == 'Y'

# Query parameters:
  request.queryparam.myparam == 'fish'
  (request.queryparam.param1 == 'X' || request.queryparam.param2 == 'Y') && request.queryparam.param3 == 'Z'

# Faults:
  fault.code != 'messaging.runtime.RouteFailed'
  fault.name == 'IPDeniedAccess'

カスタム変数の使用方法については、Apigee コミュニティApigee でカスタム属性を使用する方法をご覧ください。

事前定義の UI フィルタ

Apigee UI には一般的なフィルタが用意されています。これらのフィルタを使用すれば、独自のカスタム フィルタを作成する必要はありません。次の表に、事前定義フィルタの概要を示します。

フィルタ名 説明
Response Time Greater Than

レイテンシの問題を確認します。

  • target.duration はターゲットのレイテンシです。または、リクエストが送信され、ターゲットからレスポンスを受信するまでの時間(ミリ秒)です(target.received.end.timestamptarget.sent.start.timestamp の差で計算します)。
  • client.duration はクライアントのレイテンシです。または、リクエストが送信され、クライアントからレスポンスを受信するまでの時間(ミリ秒)です(client.received.end.timestampclient.sent.start.timestamp の差で計算します)。

例:

target.duration > 420 && client.duration > 1000

詳細については、フロー変数のリファレンスclienttarget をご覧ください。

Response Code

指定された値と HTTP レスポンス コードが一致するかどうかを確認します。例:

response.status.code <= 599
Header

指定されたリクエスト ヘッダーが指定の値と一致するかどうかを確認します。例:

request.header.cache-control.1 == "16544"
Path

リクエストが指定されたパスと一致するかどうかを確認します。値にワイルドカード マッチングを使用できます。例:

request.path == /myproxy/customer/4*
Query Param

指定されたリクエスト クエリ パラメータが指定の値と等しいかどうかを確認します。例:

request.queryparam.lang == "language:en-us"
Custom

独自の式を挿入できます。フロー変数リファレンスにある任意のオブジェクトと条件リファレンスの構文を使用できます。また、カスタム変数を使用することもできます。

カスタム フィルタの作成の詳細については、フィルタ構文をご覧ください。

 

デバッグ セッションを表示する

デバッグ セッション データは 24 時間保存されます。この値は構成できません。24 時間が経過するとデータは利用できなくなります。それまでは、デバッグ セッションを表示できます。

次のセクションで説明するように、最近のデバッグ セッションを表示するには Apigee UI または API を使用します。

Cloud コンソールの UI

Debug v2(新規)

Google Cloud コンソールを使用してデバッグ セッションを表示するには

  1. Google Cloud コンソールにログインします。
  2. [プロキシ開発] > [API プロキシ] をクリックします。

  3. デバッグするプロキシをクリックします。
  4. [デバッグ] タブをクリックします。
  5. [Recent debug sessions] に、使用可能なデバッグ セッションのリストが表示されます。
  6. 表示するセッションのリンクをクリックします。

Debug v1

新しいプロキシ エディタを使用してデバッグ セッションを表示するには:

  1. Google Cloud コンソールにログインします。
  2. [プロキシ開発] > [API プロキシ] を選択します。

  3. デバッグするプロキシを選択します。
  4. [デバッグ] タブをクリックします。
  5. [Recent debug sessions] に、使用可能なデバッグ セッションのリストが表示されます。
  6. 表示するセッションのリンクをクリックします。

従来の UI

従来のプロキシ エディタを使用してデバッグ セッションを表示するには:

  1. Apigee UI にログインします。
  2. メインビューから [API Proxies] を選択します。
  3. デバッグするプロキシを選択します。
  4. [デプロイ] ビューの右上にある [デバッグ] タブをクリックします。
  5. [Recent debug sessions] パネルで次の操作を行います。
    1. [Env] プルダウン リストから、デバッグ セッションを表示する API プロキシの環境を選択します。
    2. [Rev] プルダウン リストから、デバッグ セッションを表示する API プロキシのリビジョン番号を選択します。

    Apigee UI に、利用可能なデバッグ セッションのリストが表示されます。

  6. 表示するセッションのリンクをクリックします。

    デバッグ セッションが読み込まれ、[Send Requests] パネルにデバッグデータが表示されます。

API

API を利用すると、次のような処理が可能です。

API を使用してすべてのデバッグ セッションを表示する

環境内で API プロキシ リビジョンに定義されている最新のデバッグ セッションをすべて表示するには、次のリソースに GET リクエストを発行します。

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions

必要に応じて、次のクエリ パラメータのいずれかを指定して、返されるデータ量を制御できます。

  • pageSize - 一覧を取得するデバッグ セッションの最大数。ページサイズはデフォルトの 25 に設定されています。
  • pageToken - 前の呼び出しから返されたページトークン。次のページを取得するときに使用できます。

次の例は、test 環境にある helloworld API プロキシのリビジョン 1 のデバッグ セッションを表示する方法を示しています。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions" \
-X GET \
-H "Authorization: Bearer $TOKEN"

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

次のように、レスポンスには現在アクティブなデバッグ セッションのリストを含む sessions オブジェクトが含まれています。

{
"sessions": [
{
"id": "a423ac73-0902-4cfa-4242-87a353a84d87",
"timestamp_ms": 1566330186000
},
{
"id": "f1eccbbe-1fa6-2424-83e4-3d063b47728a",
"timestamp_ms": 1566330286000
}
]
}

トランザクションが 1 つ以上存在するデバッグ セッションのみがレスポンスに含まれます。このリストには、トランザクションのないデバッグ セッションは含まれていません。

詳細については、Debug Sessions API の一覧表示をご覧ください。

API を使用してデバッグ セッションのすべてのトランザクションを表示する

デバッグ セッションのトランザクションの一覧を表示するには、次のリソースに GET リクエストを発行します。

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions/debugsession/data

ここで、debugsessionデバッグ セッションを表示したときに返されるデバッグ セッションの ID です。

次の例は、test 環境にある helloworld API のリビジョン 1 のデバッグ セッションのトランザクションを表示する方法を示しています。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data" \
-X GET \
-H "Authorization: Bearer $TOKEN"

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

レスポンスには、次のように取引 ID の配列が含まれます。

[
"myorg-test-ver-5qxdb-64",
"myorg-test-ver-5qxdb-65",
"myorg-test-ver-5qxdb-66",
"myorg-test-ver-5qxdb-67",
"myorg-test-ver-5qxdb-68",
"myorg-test-ver-5qxdb-69",
"myorg-test-ver-5qxdb-70",
"myorg-test-ver-5qxdb-71",
"myorg-test-ver-5qxdb-72"
]

詳細については、デバッグ セッション データ API の一覧表示をご覧ください。

API を使用してデバッグ セッションのトランザクション データを表示する

デバッグ セッションのトランザクション データを表示するには、次のリソースに GET リクエストを発行します。

https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/debugsessions/{debugsession}/data/{transactionId}

ここで debugsession は、デバッグ セッションを表示する際に返されるデバッグ セッションの ID です。transactionIdデバッグ セッションのトランザクションのリストを表示する際に返されるトランザクション ID です。

デバッグ セッションで保存されるトランザクション データは JSON 形式になります。このデータは Offline Debug ツールで読み込むことができます。

次の例は、test 環境にある helloworld API のリビジョン 1 のデバッグ セッションのトランザクション データをダウンロードする方法を示します。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data/myorg-test-ver-5qxdb-64" \
-X GET \
-H "Authorization: Bearer $TOKEN"

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

ダウンロード データの構造で説明しているとおり、レスポンスには、指定したトランザクションのデータを含む JSON ペイロードが含まれます。

デバッグデータには、各フローのリクエストとレスポンスに関するすべての情報が独自の JSON 形式で含まれています。このデータを保存して、後でオフライン デバッグツールで使用できます。

セッションが終了する前にリクエストが 1 つも追加されなかった場合、レスポンスは次のようになります。

[]

詳細については、デバッグ セッション データ API の取得をご覧ください。

UI で表示オプションを選択する

このセクションでは、表示オプションを選択して UI に表示される内容をフィルタする方法について説明します。

Cloud コンソールの UI

デバッグ セッションの表示オプションを選択するには、[表示オプション] ペインのオプションを選択またはクリアします。これらの表示オプションは、各ユーザーのデバッグ セッションで保持されます。

クリックして画像を拡大 表示オプションのリスト
オプション 説明
Show disabled policies 無効化されたポリシーを表示します。公開 API でポリシーを無効にすることができます。API プロキシ構成のリファレンスをご覧ください。
Show skipped policies スキップされたポリシーを表示します。スキップされたポリシーは、ステップ条件が false と評価されたためにポリシーが実行されなかった場合に発生します。詳しくは、フロー変数の条件をご覧ください。
Show all FlowInfos フロー セグメント内の遷移を表示します。
Show all flow conditions 各フローの評価された条件を示します。

従来の UI

デバッグ セッションの表示オプションを選択するには、[表示オプション] ペインのオプションを選択またはクリアします。

表示オプションのリスト

オプション 説明
Show Disabled Policies 無効化されたポリシーを表示します。公開 API でポリシーを無効にすることができます。API プロキシ構成のリファレンスをご覧ください。
Show Skipped Phases スキップされたフェーズを表示します。スキップされたフェーズは、ステップ条件が false と評価されたためにポリシーが実行されなかった場合に発生します。詳しくは、フロー変数の条件をご覧ください。
Show all FlowInfos フロー セグメント内の遷移を表示します。
Automatically Compare Selected Phase 選択したフェーズを前のフェーズと比較します。選択したフェーズのみを表示するには、このオプションをオフにします。
Show Variables 値が読み取られて割り当てられた変数の表示 / 非表示を切り替えます。
Show Properties プロパティは、API プロキシの内部状態を表します(デフォルトでは非表示)。

デバッグ セッションを共有する

組織へのアクセス権と必要な権限を持っている他のユーザーとデバッグ セッションを共有できます。共有するには、デバッグ セッションを表示したときにブラウザに表示される URL を送信します。このリンクの有効期間は、デバッグ セッションの作成後 24 時間です。

デバッグ セッション データをダウンロードする

未加工のデバッグ結果が保存されているファイルをダウンロードして、オフラインで表示できます。ダウンロードされたファイルには、すべてのヘッダー、変数、ポリシーの内容を含むデバッグ セッションの詳細が含まれています。

UI でデバッグ セッション データをダウンロードまたは表示できる期間は 24 時間です。この時間が経過すると、Apigee はセッション データを削除します。

ダウンロードしたデバッグ セッション データを表示するには、オフライン デバッグツールを使用します。

Cloud コンソールの UI

Debug v2(新規)

Google Cloud コンソールで現在のデバッグ セッションをダウンロードするには、[デバッグ] ビューの [ダウンロード] をクリックします。

クリックして画像を拡大 デバッグ セッションのダウンロード

Debug v1

新しいプロキシ エディタで現在のデバッグ セッションをダウンロードするには、[デバッグ] ビューの左側のペインにある [Download Session] をクリックします。

デバッグ セッションをダウンロードする

デバッグ セッションは、完了後 24 時間で削除されるため、それ以降にデバッグ セッションを表示する場合は、事前にダウンロードしておく必要があります。

従来の UI

従来のプロキシ エディタを使用して現在のデバッグ セッションのデータをダウンロードするには:

  • アクティブ セッション: [Debug details] パネルのダウンロード アイコン(ダウンロード アイコン)をクリックします。
  • 前のセッション: [Recent debug sessions] パネルでセッションの名前をクリックします。デバッグ セッションの表示をご覧ください。その後、[Debug details] パネルの ダウンロード アイコン をクリックします。

API

Apigee API を使用して現在のデバッグ セッションのすべてのトランザクションの ID を表示するには、次のコマンドを入力します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
         https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions/SESSION_ID/data

ここで SESSION_ID は、ダウンロードするデバッグ セッションの ID です。

デバッグ セッションのトランザクション ID を一覧表示するをご覧ください。

Apigee API を使用してトランザクションのデバッグデータを取得するには、次のコマンドを入力します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions/SESSION_ID/data/TRANSACTION_ID

ダウンロード データの構造

ダウンロードされるデバッグ セッション データの構造は Apigee UI と Apigee API で異なります。

Cloud コンソールの UI

Apigee UI を使用してデータをダウンロードする場合、データ構造は次のとおりです。

  • セッション全体のすべてのトランザクションが含まれます。
  • トランザクションを Messages 配列に格納します。
  • セッションに関するメタデータが含まれます(DebugSession オブジェクトとして)。

従来の UI

Apigee UI を使用してデータをダウンロードする場合、データ構造は次のとおりです。

  • セッション全体のすべてのトランザクションが含まれます。
  • トランザクションを Messages 配列に格納します。
  • セッションに関するメタデータが含まれます(DebugSession オブジェクトとして)。

API

Apigee API を使用して、セッション全体のデータを一度に表示することはできません。デバッグ セッションの表示で説明されているように、API を使用して表示できるのは個々のトランザクション データのみです。

例:

{
"completed": true,
"point": [
  ...
...
}

ダウンロード データの例

次の例では、ダウンロードされたデータの DebugSession メタデータ オブジェクトがハイライト表示されています。このオブジェクトの後に、セッション内のトランザクションを含む Messages 配列が続きます。

{
  "DebugSession": {
    "Retrieved": "2019-06-08T13:08:13.395Z",
    "Organization": "myorg",
    "Environment": "prod",
    "API": "myproxy",
    "Revision": "1",
    "SessionId": "a2a271aa-4242-4ac6-97cb-aec8dcb115a9"
  },
  "Messages": [
    {
      "completed": true,
      "point": [
        {
          "id": "Paused"
        },
        {
          "id": "Resumed"
        },
        {
          "id": "StateChange",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "To",
                    "value": "REQ_HEADERS_PARSED"
                  },
                  {
                    "name": "From",
                    "value": "REQ_START"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            },
            {
              "ActionResult": "RequestMessage",
              "headers": [
                {
                  "name": "accept",
                  "value": "*/*"
                },
                {
                  "name": "accept-encoding",
                  "value": "gzip,gzip,deflate,br"
                },
                {
                  "name": "content-length",
                  "value": "0"
                },
                {
                  "name": "host",
                  "value": "myorg.example.domain.net"
                },
                {
                  "name": "user-agent",
                  "value": "Google-Apigee"
                },
                {
                  "name": "x-b3-sampled",
                  "value": "0"
                },
                {
                  "name": "x-b3-spanid",
                  "value": "d4ee579206759662"
                },
                {
                  "name": "x-b3-traceid",
                  "value": "adc1e171777c237dd4ee579206759662"
                },
                {
                  "name": "x-forwarded-for",
                  "value": "66.102.8.98"
                },
                {
                  "name": "x-forwarded-proto",
                  "value": "https"
                },
                {
                  "name": "x-request-id",
                  "value": "54e05cba-4242-4490-4242-60c45c156f90"
                }
              ],
              "uRI": "/myproxy",
              "verb": "GET"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "environment.name",
                    "value": "prod"
                  },
                  {
                    "name": "environment.qualifiedname",
                    "value": "myorg__prod"
                  },
                  {
                    "name": "environment.orgname",
                    "value": "myorg"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "organization.name",
                    "value": "myorg"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "apiproxy.qualifiedname",
                    "value": "myproxy__1"
                  },
                  {
                    "name": "apiproxy.basepath",
                    "value": "/"
                  },
                  {
                    "name": "apiproxy.revision",
                    "value": "1"
                  },
                  {
                    "name": "apiproxy.name",
                    "value": "myproxy"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        ...
      ...
    }
  ]
}

デバッグ セッションにリクエストが含まれていなかった場合、次の例のように Message 配列が空になっています。

{
  "DebugSession": {
    "Retrieved": "2019-06-08T13:08:13.395Z",
    "Organization": "myorg",
    "Environment": "prod",
    "API": "myproxy",
    "Revision": "1",
    "SessionId": "a2a271aa-4242-4ac6-97cb-aec8dcb115a9"
  },
"Messages": []
}

デバッグ セッションのデータを削除する

以下のセクションで説明するように、デバッグ セッション データを削除するには Apigee UI または API を使用します。

Cloud コンソールの UI

Debug v2(新規)

Google Cloud コンソールでデバッグ セッションを削除するには:

  1. [デバッグ] タブで、削除するセッションの行をクリックします。
  2. [Debug session] ペインで、 [削除] をクリックします。
クリックして画像を拡大 デバッグ セッションの削除

Debug v1

新しいプロキシ エディタでデバッグ セッションを削除するには:

  1. 削除するセッションの行を選択します。
  2. 行の最後にあるその他メニューをクリックし、[削除] を選択します。

従来の UI

デバッグ セッションの [Debug details] パネルで 削除アイコン をクリックします。

API

API を使用してすべてのデバッグ セッション データを削除するには、次のリソースに DELETE リクエストを送信します。

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions/debugsession/data

ここで、debugsessionデバッグ セッションを表示したときに返されるデバッグ セッションの ID です。

次の例は、test 環境の helloworld API のリビジョン 1 のデバッグ セッション データを削除する方法を示しています。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data" \
      -X DELETE \
      -H "Authorization: Bearer $TOKEN"
    

ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

成功すると、レスポンスの本文は空になります。

デバッグ セッション データは 24 時間保持されます。その時間までに削除しなかった場合、Apigee によって削除されます。