デバッグの使用

このページの内容は 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. ウィンドウの左上にある [デバッグ] タブをクリックします。
  4. [デバッグ] ペインの右上にある [Start Debug Session] をクリックします。これにより、[Start debug session] ダイアログが表示されます。

    [Start debug session] ダイアログ。

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

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

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

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

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

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

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

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

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

[Start debug session] ダイアログ。

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

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

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

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

右側のペインに表示されたトランザクション ステップのガントチャート。

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

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

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

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

  • ResponsePayload
  • Add CORS

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

Add CORS ポリシーの詳細。

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

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

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

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

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

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

      次の例は、成功した複数のリクエストを示しています(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 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 時間以内にデータが削除されます。

デバッグの読み取り方法

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

エラーアイコン エラー。ポリシー ステップの条件が 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 でデバッグ セッションを作成するときに、[フィルタ] プルダウン リストから、[Start a debug session] パネルに適用する定義済みフィルタを選択できます。また、[カスタム フィルタ] を選択し、フィルタ構文を使用して独自のフィルタを作成することもできます。

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. [デバッグ] タブをクリックします。
  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 プロキシ構成のリファレンスをご覧ください。
Show Skipped Phases スキップされたフェーズを表示します。スキップされたフェーズは、ステップ条件が false と評価されてポリシーが実行されなかった場合に発生します。詳しくは、フロー変数の条件をご覧ください。
Show all FlowInfos フロー セグメント内の遷移を表示します。
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. 行の最後にあるその他メニューをクリックし、[削除] を選択します。

従来のプロキシ エディタ

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

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