このページの内容は Apigee と Apigee ハイブリッドに該当します。
Apigee Edge のドキュメントを表示します。
このセクションでは、デバッグ セッションの作成と管理を行い、Apigee UI と API を使用してリクエストとレスポンスのデータを表示する方法について説明します。
以前にダウンロードしたデバッグ セッションを表示、分析するには、Offline Debug を使用します。
デバッグ セッションの作成
デバッグ セッションを作成すると、API などの外部ソースで作成されたリクエストのリクエスト データとレスポンス データを UI で確認できます。
次のセクションで説明するように、Apigee UI または API を使用してデバッグ セッションを作成します。
新しいプロキシ エディタ
新しいプロキシ エディタでデバッグ セッションを作成するには:
Google Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。
従来の Apigee UI を使用している場合: [開発] > [API プロキシ] を選択して、[プロキシ] ペインでデバッグするプロキシの環境を選択します。
デバッグする API プロキシを選択します。プロキシ エディタの [概要] ビューが表示されます。
- ウィンドウの左上にある [Debug] タブをクリックします。
- [Debug] ペインの右上にある [Start Debug Session] をクリックします。これにより、[Start debug session] ダイアログが表示されます。
ダイアログで操作を行う場合:
- デバッグ セッションを実行する環境を選択します。
- (省略可)[Filter] プルダウン リストから、作成するデバッグ セッションのすべてのトランザクションに適用するフィルタを選択します。デフォルトは
None (All transactions)
で、これにはデバッグデータ内のすべてのトランザクションが含まれます。フィルタの使用方法については、デバッグ セッションでのフィルタの使用をご覧ください。組み込みフィルタの詳細については、定義済みフィルタの使用をご覧ください。
- [起動] をクリックします。
Apigee UI に [Debug session in progress] ビューが表示されます。
デバッグ セッションには、セッションの作成後 10 分間のリクエストが記録されます。Ends within フィールドには、セッションの残り時間が表示されます。
選択した環境でデバッグしているプロキシにリクエストを送信するまで、[Debug] ペインには情報が表示されません。デバッグ セッションの環境。
送信したリクエストが左側のペインの下部に表示されます。
注: アクティブなデバッグ セッション中に、Apigee UI で別のセッションを開始できます。そのためには、[Start Debug Session] をもう一度クリックします。
トランザクションのガントチャートの表示
[Debug] ビューでトランザクションの詳細(リクエストとレスポンス)を表示するには、上の画像に示すように、トランザクションの行をクリックします。
右側のペインにガントチャートが表示され、リクエストとレスポンスのステップが表示されます。
図の横軸は各ステップが発生した時間(ミリ秒単位)を示しています。各ステップは、ステップの開始時間から終了時間までの長方形で表されます。
デバッグペインを進めるには、デバッグペインの右下にある [Back] ボタンと [Next] ボタンを使用します。次のように使用します。
- Back をクリックすると、選択した行をグラフ内の前のステップに移動します。
- Next をクリックすると、選択した行をグラフ内の次のステップに移動します。
上記の例では、レスポンスで実行される 2 つのポリシーがグラフに表示されています。
- ResponsePayload
- Add CORS
いずれかのステップをクリックすると、その詳細が表示されます。たとえば、[Add CORS] ポリシーをクリックすると、以下の詳細がガントチャートの横に表示されます。
ポリシー構成を変更する場合は、[Develop] をクリックして [Develop] ビューに切り替えます。ここで、レスポンス PostFlow には同じ 2 つのポリシーが表示されます。
デバッグ セッションを共有する
組織へのアクセス権と必要な権限を持っている他のユーザーとデバッグ セッションを共有できます。共有するには、デバッグ セッションを表示したときにブラウザに表示される URL を送信します。このリンクの有効期間は、デバッグ セッションの作成後 24 時間です。
デバッグ セッションをダウンロードする
デバッグ セッションが終了したら、それをダウンロードして、オフライン デバッグツールで分析できます。そうするには、左側のペインで [Download Session] をクリックします。
デバッグ セッションは、終了後 24 時間で削除されるため、それ以降にデバッグ セッションを表示する場合は、事前にダウンロードする必要があります。
デバッグ セッションをダウンロードすると、ダウンロード ファイルの名前は「debug-{session ID}.json」の形式になります。この {session id} はデバッグ セッションの ID です。このファイル名は、必要に応じて変更できます。
従来バージョンのプロキシ エディタ
従来のプロキシ エディタでデバッグ セッションを作成するには:
- Apigee UI にログインします。
- メインビューから [API Proxies] を選択します。
デバッグする API プロキシを選択します。
[Overview] タブが表示されます。
- ページの右上にある [Debug] タブをクリックします。
[Debug] ビューが表示されます。
- [Start a debug session] パネルで次の操作を行います。
- [Env] プルダウン リストから、デバッグする API プロキシの環境とリビジョン番号を選択します。
- (省略可)[Filter] プルダウン リストから、作成するデバッグ セッションのすべてのトランザクションに適用するフィルタを選択します。デフォルトは
None
であり、これにはトレースデータ内のすべてのトランザクションが含まれます。フィルタの使用方法については、デバッグ セッションでのフィルタの使用をご覧ください。組み込みフィルタの詳細については、定義済みフィルタの使用をご覧ください。
- [Start Debug Session] をクリックします。
Apigee UI の [Debug details] パネルに、ID を含む現在のデバッグ セッションの詳細が表示されます。
UI はデバッグ セッションを作成しましたが、収集するデータが発生する前にリクエストを送信する必要があります。
[Debug details] パネルでは、次の操作を行うことができます。
アイコン 関数 説明 ダウンロード アクティブ セッションのデバッグデータをダウンロードします。このデータはオフラインで表示できます。 戻す 前のパネルに戻ります。ここで別のデバッグ セッションを開始できます。現在のデバッグ セッションは、タイムアウトになるか、トランザクション数に達するまで継続します。 削除 現在選択されているデバッグ セッションのデータを削除します。セッションのデータは削除されますが、セッションは停止しません。 UI で開始したデバッグ セッションのデフォルトのタイムアウトは 10 分です。これは API で開始したセッションとは異なります。
[Start Debug Session] をクリックすると直ちに時計が稼働し始めます。収集するデータ量を最大にするには、次のステップが終わるまで待機してから [Start Debug Session] をクリックします。
次の例は [Start a debug session] パネルを示しています。
- [Send Requests] パネルで、以下の操作を行います。
- [URL] フィールドに、リクエストの送信先となるエンドポイントを入力します。必要に応じて、URL にクエリ文字列パラメータを追加します。
GET
以外のリクエストは送信できません。エンドポイント URL の見つけ方
- [Admin] > [Environments] > [Access] の順に移動します。
- この URL は、デバッグ セッションを実行する環境のホスト名です。
- [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] ビューのその他のセクションの詳細については、デバッグの読み取り方法をご覧ください。
[Send Requests] パネルには、UI ベースのリクエストのデータのみが表示されます。ただし、UI で開始していないリクエストのデータも記録されています。
デバッグ セッションがアクティブになり、すべてのリクエストのデータが記録されます(除外されている場合を除く)。セッションは、タイムアウトに達するか、セッションで記録されたリクエスト数が上限を超えるまで、アクティブな状態が維持されます。
- [URL] フィールドに、リクエストの送信先となるエンドポイントを入力します。必要に応じて、URL にクエリ文字列パラメータを追加します。
- UI では、任意の数のデバッグ セッションを作成できます。詳細については、別のデバッグ セッションを開始するをご覧ください。
UI で別のデバッグ セッションを開始する
アクティブなデバッグ セッション中に、Apigee UI で別のセッションを開始できます。この操作を行うには、[Debug の詳細] パネルで戻る矢印アイコン(
)をクリックします。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 と評価された条件フロー。条件フローの概要については、フローの構成をご覧ください。 一部の条件は Apigee で生成されるので注意してください。たとえば、次に示すのは、Apigee が ProxyEndpoint でエラーが発生したかどうかを確認するために使用する式です。 ((error.state equals PROXY_REQ_FLOW) or (error.state equals
PROXY_RESP_FLOW))
|
|
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)))
|
|
ポリシー。ポリシーのタイプごとに一意のアイコンがあります。これは、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
必要に応じて、次の処理を行うこともできます。
timeout
プロパティをクエリ パラメータとして渡すか、またはリクエスト本文でデバッグ セッションの長さ(秒)を設定します。両方で指定された場合は、リクエスト本文で指定されたtimeout
値が優先されます。- リクエスト本文に
filter
プロパティを渡してデバッグ セッションのデータをフィルタリングします。
次の例は、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" }
フィルタの作成の詳細については、フィルタ構文をご覧ください。
次の例では、ヘッダー A
が 42
、ヘッダー B
が 43
、または障害コードが 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 > 420 && client.duration > 1000 詳細については、フロー変数のリファレンスで |
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 を使用します。
新しいプロキシ エディタ
新しいプロキシ エディタを使用してデバッグ セッションを表示するには:
Google Cloud コンソールの Apigee UI を使用している場合: [プロキシ開発] > [API プロキシ] を選択します。
従来の Apigee UI を使用している場合: [開発] > [API プロキシ] を選択して、[プロキシ] ペインでデバッグするプロキシの環境を選択します。
- デバッグするプロキシを選択します。
- [Debug] タブをクリックします。
- [Recent debug sessions] に、使用可能なデバッグ セッションのリストが表示されます。
表示するセッションのリンクをクリックします。
従来バージョンのプロキシ エディタ
従来バージョンのプロキシ エディタを使用してデバッグ セッションを表示するには:
- Apigee UI にログインします。
- メインビューから [API Proxies] を選択します。
- デバッグするプロキシを選択します。
- [Deployments] ビューの右上にある [Debug] タブをクリックします。
- [Recent debug sessions] パネルで次の操作を行います。
- [Env] プルダウン リストから、デバッグ セッションを表示する API プロキシの環境を選択します。
- [Rev] プルダウン リストから、デバッグ セッションを表示する API プロキシのリビジョン番号を選択します。
Apigee UI に、利用可能なデバッグ セッションのリストが表示されます。
表示するセッションのリンクをクリックします。
デバッグ セッションが読み込まれ、[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 を使用します。
新しいプロキシ エディタ
新しいプロキシ エディタでデバッグ セッションを削除するには:
- 削除するセッションの行を選択します。
- 行の最後にあるその他メニューをクリックし、[削除] を選択します。
従来バージョンのプロキシ エディタ
デバッグ セッションの [デバッグの詳細] パネルで をクリックします。
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 によって削除されます。