デバッグの使用

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

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

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

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

デバッグ セッションの作成

デバッグ セッションを作成すると、API などの外部ソースで作成されたリクエストのリクエスト データとレスポンス データを UI で確認できます。

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

新しいプロキシ エディタ

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

  1. Google Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。

    従来の Apigee UI を使用している場合: [開発] > [API プロキシ] を選択して、[プロキシ] ペインでデバッグするプロキシの環境を選択します。

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

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

    [Start debug session] ダイアログ。

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

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

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

    3. [起動] をクリックします。

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

Debug session in progress

デバッグ セッションには、セッションの作成後 10 分間のリクエストが記録されます。Ends within フィールドには、セッションの残り時間が表示されます。

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

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

[Start debug session] ダイアログ。

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

トランザクションのガントチャートの表示

[Debug] ビューでトランザクションの詳細(リクエストとレスポンス)を表示するには、上の画像に示すように、トランザクションの行をクリックします。

右側のペインにガントチャートが表示され、リクエストとレスポンスのステップが表示されます。

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

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

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

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

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

  • ResponsePayload
  • Add CORS

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

Add CORS ポリシーの詳細。

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

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

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

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

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

デバッグ セッションが終了したら、それをダウンロードして、オフライン デバッグツールで分析できます。そうするには、左側のペインで [Download Session] をクリックします。

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

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

デバッグ セッションをダウンロードすると、ダウンロード ファイルの名前は「debug-{session ID}.json」の形式になります。この {session id} はデバッグ セッションの ID です。このファイル名は、必要に応じて変更できます。

従来バージョンのプロキシ エディタ

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

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

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

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

    タブ

    [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. (省略可)[Filter] プルダウン リストから、作成するデバッグ セッションのすべてのトランザクションに適用するフィルタを選択します。デフォルトは 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. [Admin] > [Environments] > [Access] の順に移動します。
      2. この URL は、デバッグ セッションを実行する環境のホスト名です。
    2. [Send Requests] パネルには、UI ベースのリクエストのデータのみが表示されます。ただし、UI で開始していないリクエストのデータも記録されています。

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

      指定された URL にリクエストが送信されます。[Send] をクリックするたびに、Apigee UI によって [デバッグの詳細] パネルでリクエストがログに記録されます。

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

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

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

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

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

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

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

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

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

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

戻るアイコンをクリックすると、[Start a debug session] パネルに戻ります。

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

デバッグ セッションの終了

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

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

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

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

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

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

デバッグの読み取り方法

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

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

以下に掲載しているのは、主なプロキシ処理セグメントにラベルを付けたサンプル Debug ツールマップです。

Debug ツールのトランザクション マップ

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

トランザクション マップの凡例

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

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

クライアント アプリのアイコン 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 プロキシ構成リファレンスをご覧ください。

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

フェーズの詳細について

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

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

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

:

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

Apigee 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 分)です。

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

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

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

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

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

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

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

フィルタの使用

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

従来の Apigee UI

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

Apigee 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 を使用します。

新しいプロキシ エディタ

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

  1. Google Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。

    従来の Apigee UI を使用している場合: [開発] > [API プロキシ] を選択して、[プロキシ] ペインでデバッグするプロキシの環境を選択します。

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

従来バージョンのプロキシ エディタ

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

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

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

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

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

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

Apigee UI では、デバッグ セッション用の表示オプションを選択できます。

表示オプションのリスト

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

Apigee 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 形式で含まれています。このデータを保存して、後で Offline Debug ツールで使用できます。

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

[]

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

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

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

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

新しいプロキシ エディタ

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

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

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

従来バージョンのプロキシ エディタ

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

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

Apigee 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 で異なります。

従来の Apigee UI

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

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

Apigee 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 を使用します。

新しいプロキシ エディタ

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

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

従来バージョンのプロキシ エディタ

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

Apigee 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 によって削除されます。