Apigee のカスタム レポートで API のパフォーマンス分析情報を獲得する
Aakanksha Nikhare
Strategic Cloud Engineer
Ayush Gupta
Strategic Cloud Engineer
※この投稿は米国時間 2024 年 6 月 15 日に、Google Cloud blog に投稿されたものの抄訳です。
API のパフォーマンスをモニタリングすることは、ユーザー エクスペリエンス、ビジネスの保護、問題解決の事前対応の観点から重要です。API のパフォーマンスを把握するには、応答時間、スループット、エラー率、レイテンシ、可用性などの主要な指標を理解する必要があります。こうした指標の最適化は重要です。というのも、パフォーマンスが良好でないと、ユーザーの不満、ビジネスの損失、会社の評判の低下につながってしまう可能性があるからです。
Apigee API Management のカスタム レポート機能は、API の分析データを詳細に可視化し、API プログラムに関する高度にカスタマイズされた分析情報を取得できる優れた手段です。このようなレポートは、ビジネス チーム、プラットフォーム チーム、開発チームなど、API に関与する人すべてにとって有益なものであり、データドリブンな意思決定を促進し、API パフォーマンスのモニタリングを強化するのに役立ちます。Apigee のカスタム レポートを使用して、リクエスト エンドポイント、レスポンス コード、エラータイプなどの API 指標に着目することで、ボトルネックや異常を特定し、より迅速な問題の解決につなげることができます。対象期間をカスタムで指定してデータを集計することもでき、傾向の分析、キャパシティ プランニング、特定のイベントとパフォーマンスの相関の把握を簡単に行えるため、モニタリング戦略を全体的に強化することが可能です。
このブログでは、本番環境のデプロイのトラブルシューティング、パフォーマンスの最適化、API 戦略全体の強化に役立つ主要なカスタム レポートを紹介します。この記事の主な対象読者は、日常的にプラットフォームのモニタリングを行うプラットフォーム チーム、オペレーション チーム、開発チームの方です。ここで取り上げるカスタム レポートは、さまざまなトラブルシューティングのシナリオに合わせて適宜調整、拡張することが可能な基盤として活用できます。
Apigee カスタム レポートについて
サブスクリプションの利用資格にもよりますが、Apigee では最大で 14 か月分の API 分析データが保持されるため、分析情報をさかのぼって確認できるという利点があります。すぐに使える API モニタリング ダッシュボードとカスタム レポートは Apigee API のモニタリングの取り組みにおける重要なコンポーネントであり、これらは互いを補完する形で機能します。この事前構築済みダッシュボードでは環境レベルおよび API プロキシレベルで分析情報を取得できます。一方、カスタム レポートではさらに詳細な情報を柔軟性に優れた手法で確認できます。
カスタム レポートを使用すると、特定のチームや目的に関連する、API トラフィックに固有のデータ パラメータを取得できます。多種多様なディメンションを使用してデータにフィルタを適用し、フィルタ済みのデータを集計して合計や平均などを割り出すことで、データから有意な情報を引き出せます。たとえば、オペレーション チームであれば、特定の API プロキシとターゲット ホスト内のどのリクエスト URI が最も多くのトラフィックを受信しているかを確認できます。また、コレクタ リソースからカスタム API データポイントを取り込み、さらに詳細でカスタマイズされた分析を実行することも可能です。
カスタム レポートは非常に柔軟な手法で作成でき、さまざまなディメンションと指標を試すことができます。たとえば、ディメンションとしてターゲット IP1 ではなく、分析が容易なターゲット ホストを使用することは、どのようなレポートでもおすすめです。ホストや FQDN は IP アドレスよりも覚えやすく、カスタム レポートでこれらを使用することで、単一のターゲット IP から到達する宛先が複数ある場合にも、トラフィック パスを個別に取得できるようになります。レポートで使用可能なその他の役立つディメンションには、プロキシ ベースパス、リクエスト URI、ユーザー エージェント、クライアント IP、API プロダクト、デベロッパー アプリ、地域などがあります。
主なカスタム レポート
それぞれについて、次のセクションで詳しく説明します。
1. レイテンシ分析
レイテンシ分析は、システム内またはネットワーク内のボトルネックや遅延を特定する際に有用です。パフォーマンスの最適化や、全体的なユーザー エクスペリエンスの改善に役立てることができます。
Apigee で、単一のプロキシに対して複数のターゲット バックエンドがある場合、レイテンシの問題のトラブルシューティングが難しくなります。カスタム レポートがあれば、ターゲット ホスト、リクエスト URI、クライアント IP などのディメンションを使用して、特定のターゲット エンドポイントに照らしてレイテンシを特定できます。このようにすることで、大きなレイテンシを発生させている特定のバックエンドまたは特定のリクエスト URI を迅速に見つけ出すことができるので、デバッグ プロセスの簡素化につながります。クライアント IP アドレスをディメンションとして使用すると、特定のアプリケーション ユーザーの遅延の根本原因を特定したり、問題が発生しているのがローカル ネットワーク内なのか、ISP 側なのか、それとも API サーバーへのルート上なのかを調査したりする際に役立ちます。
ターゲット エンドポイントのレイテンシ分析のレポートを作成する手順は次のとおりです。
-
指標として avg(total response time) と avg(target response time) を選択する
-
ディメンションとしてプロキシ ベースパス、ターゲット ホスト、リクエスト URI、クライアント IP を選択する
-
フィルタを適用してデータを限定する
-
期間を指定してカスタム レポートを実行する
以下は、サンプルのカスタム レポートのスクリーンショットです。


分析の精度を高める目的で、ターゲット ホストとリクエスト URI が選択されています。ターゲット ホストを使用することで、大きなレイテンシを発生させている API プロキシ内のターゲット エンドポイントに絞り込んでいます。リクエスト URI フィルタを適用することで、大きなレイテンシが発生している個々の API リクエストに関連する問題をトラブルシューティングできます。特定のリクエスト URI が大きなペイロードを処理しているか、複雑なオペレーションを処理しているとき、トラブルシューティングを必要とする大きなレイテンシが発生していることが示唆されています。次のスクリーンショットは、3 番目のディメンションとしてリクエスト URI を使用したサンプル レポートです。


クライアント固有の問題をトラブルシューティングするために、ディメンションとしてクライアント IP が追加されています。次のスクリーンショットは、4 番目のディメンションとしてクライアント IP を使用したサンプル レポートです。


2. レスポンス コード分析
API の健全性やユーザー エクスペリエンスの全体像をすばやく把握できるレスポンス コード分析は重要です。200 OK、404 Not Found、500 Internal Server Error などのレスポンス コードを確認することで、成功か失敗かをすぐに理解できます。レスポンス コード分析は API の信頼性の向上に効果的です。問題が発生する前に修正や最適化を行えるためです。
このレポートでは、ターゲット ホスト、リクエスト URI、ターゲット レスポンス コードなどのディメンションを使用してフィルタを適用します。エラーの傾向の可視化や、バックエンド システム内の問題の特定、エラーが頻繁に発生しているリクエストの特定を行います。
レスポンス コード分析レポートを作成する手順は次のとおりです。
-
指標として sum(traffic) を選択する
-
ディメンションとしてプロキシ ベースパス、ターゲット ホスト、リクエスト URI、ターゲット レスポンス コードを選択する
-
フィルタを適用してデータを限定する
-
期間を指定してカスタム レポートを実行する
以下は、サンプルのカスタム レポートのスクリーンショットです。




次のスクリーンショットは、別のディメンションとしてリクエスト URI を使用したサンプル レポートです。


3. API プロダクト パフォーマンス分析
このレポートでは、API プロダクトのパフォーマンスに関する実践的な分析情報を詳細に、各デベロッパー アプリ / クライアント IP ごとに把握することが可能で、以下のような機能を利用できます。
-
デベロッパー アプリケーションの詳細なトラブルシューティング: API プロダクト、デベロッパー アプリ、リクエスト URI、レスポンス ステータス コードなどのディメンションを組み合わせて使用することで、エラーが発生している場所と条件を正確に突き止めることができます。これにより、特定の API 顧客の問題の解決で勘に頼る必要はなくなります。
-
クライアントに着目した分析情報: API プロダクトの利用に深くかかわる人は、主にデベロッパーやクライアントです。「クライアント IP アドレス」のディメンションは、個々のクライアントに関連するエラーの分離に役立てることが可能で、利用者側の潜在的なネットワークの問題や構成エラーの特定に有用です。
-
API プロダクト ユーザーのパフォーマンスとエラーの相関関係: エラー指標とともに「avg(total response time)」を含めることで、遅い応答がエラーの原因になっているか、エラーが全体としての API パフォーマンスに影響しているかを確認できます。
アプリ デベロッパー向けのレスポンス コード分析レポートを作成する手順は次のとおりです。
-
指標として sum(traffic) と avg(total response time) を選択する
-
ディメンションとしてデベロッパー アプリ、API プロダクト、プロキシ ベースパス、ターゲット ホスト、レスポンス ステータス コード、クライアント IP アドレスを選択する
-
フィルタを適用してデータを限定する
-
期間を指定してカスタム レポートを実行する
以下は、サンプルのカスタム レポートのスクリーンショットです。






4. キャッシュ ヒット分析
キャッシュ ヒット分析は、Apigee のキャッシュ システムがどの程度うまく機能しているかを把握するために必須であり、API の速度とユーザー エクスペリエンスの改善に役立ちます。この分析で得られる Apigee キャッシュのキャッシュ ヒット値は、キャッシュ システムを評価する際に重要なパラメータとなります。カスタム レポートでリクエスト URI などのディメンション、キャッシュ ヒットや総トラフィックなどの指標を使用すれば、Apigee のキャッシュ パフォーマンスを詳細に把握できます。
キャッシュ ヒット分析レポートを作成する手順は次のとおりです。
-
指標として sum(cache hit) と sum(traffic) を選択する
-
ディメンションとしてプロキシ ベースパスとリクエスト URI を選択する
-
フィルタを適用してデータを限定する
-
期間を指定してカスタム レポートを実行する
以下は、サンプルのカスタム レポートのスクリーンショットです。




API プロキシ内の特定のリクエスト URI のキャッシュのパフォーマンスを見るには、プルダウンでリクエスト URI のディメンションを選択してカスタム レポートを生成します。
5. ユーザー エージェント分析
API 利用者が使用しているデバイス、ブラウザ、オペレーティング システムを把握できる Apigee のユーザー エージェント分析も重要です。この分析情報から、デバイスやブラウザ固有の互換性に関する問題の特定や、詳細なログに基づくエラーのデバッグ、ユーザー エクスペリエンスを向上させるカスタムの API レスポンスの構築などを行えます。悪意のある bot や不審なアクティビティを検出し、セキュリティを強化することもできます。
ユーザー エージェント分析レポートを作成する手順は次のとおりです。
-
指標として sum(traffic) を選択する
-
ディメンションとしてプロキシ ベースパス、ターゲット ホスト、ユーザー エージェント / ユーザー エージェント ファミリー / ユーザー エージェント タイプ、レスポンス コードを選択する
-
フィルタを適用してデータを限定する
-
期間を指定してカスタム レポートを実行する
以下は、サンプルのカスタム レポートのスクリーンショットです。




6. API ロケーション分析
リクエスト URI ごとの API ロケーション分析は、API の特定のエンドポイントにヒットするトラフィックの地理的な起点を把握するために必要です。この分析を活用すると、ネットワークの問題やリージョン単位での停止などを原因とした特定の地域に固有の問題や、地理的距離が関係するパフォーマンスの問題を特定しやすくなります。また API を通じて、ローカライズされたコンテンツを地域に応じて正しく配信したり、不正行為検出の一環として不審なロケーション パターンにフラグを立てたりする際にも、この分析は役立ちます。他にも、パフォーマンスの最適化(コンテンツ配信やリソースの配置など)や、データ プライバシーに関する規則の遵守、地域に合わせたトラブルシューティングの実践、事前対応型のキャパシティ プランニング、さらには、地域ごとの API 使用パターンを考慮して情報に基づく意思決定を行うというマーケティングの領域において強みを発揮します。
キャッシュ ヒット分析レポートを作成する手順は次のとおりです。
-
指標として sum(traffic) と avg(total response time) を選択する
-
ディメンションとしてプロキシ ベースパス、ターゲット ホスト、地域を選択する
-
フィルタを適用してデータを限定する
-
期間を指定してカスタム レポートを実行する
以下は、サンプルのカスタム レポートのスクリーンショットです。


カスタム レポートにアクセスする
Google Cloud コンソールからのレポートの取得方法:
1. UI でカスタム レポート機能に移動する
-
保存されているレポートで、カスタム データを取得する
-
環境と期間を選択して、選択した指標を確認する(指標は選択したディメンションでグループ化されます)
2. (期間が短い場合)レポートを UI からリアルタイムでダウンロードする
-
[エクスポート] をクリックしてレポートを CSV 形式でダウンロードする
-
(任意)CSV ファイルをスプレッドシート ソフトウェアで開く
3. (期間が長い場合)レポート ジョブを使用してレポートを非同期で生成する
-
[ジョブを送信] をクリックする
-
環境と期間を選択して、選択した指標を確認し、[作成] をクリックする(指標は選択したディメンションでグループ化されます)
-
ジョブが完了したら、[レポート ジョブ] をクリックしてレポートをダウンロードする
-
スプレッドシート ソフトウェアで CSV を開く
リアルタイムとレポート ジョブの選択の基準については、ドキュメントをご覧ください。


以下は、ダウンロードされて Google スプレッドシートにインポートされたサンプルのレポートのスクリーンショットです。


また、Apigee の管理用 API でカスタム レポートを作成して利用することもできます。
復習用: レポート作成の操作手順
以下に示す手順に沿って、新しいカスタム レポートを作成できます。
-
https://apigee.google.com/organizations/<project-name>/analytics/custom-reports にアクセスします。[+カスタム レポート] をクリックします。
-
レポートの名前とレポートの説明をそれぞれ対応するフィールドに入力します。
-
記録する指標を選択します。その指標に対して実行する集計関数を選択します。
-
まずプロキシに対して、次いでプロキシ内にスコープされた特定のリソースに対して、1 つ以上のディメンションを順番に選択します。
-
フィルタを使用して、結果を特定の条件を満たす指標に制限します。このステップは任意です。
-
すべてのパラメータが選択されたら、レポートを保存します。
カスタム レポートを使用して API パフォーマンスを追跡する
カスタム レポートは Apigee プラットフォームで利用できる応用範囲の広い機能です。詳細かつ柔軟にデータを分析できるので、API パフォーマンスをトラッキングできるのはもちろん、さまざまな関係者の多様な要求にも応えます。利用を開始するには、Google Cloud コンソール内のカスタム レポート機能か、Apigee の管理用 API を使用します。さらに高度な可視化と分析については、Looker Studio との統合をご覧ください。
詳しく知りたい場合は、Apigee で API を最大限活用するために Google Cloud コンサルティングのエキスパートがどのようにお役に立てるか、また、お客様が学習、構築、運用し、成功を収めるうえで Google Cloud コンサルティング サービスをどのように活用できるかをご確認ください。
1. IP アドレスを対象にしたターゲット サーバー分析は簡単に行えますが、その有効性は、単一のターゲット サーバー IP が複数のマイクロサービスをサポートする Apigee を使用した ASM デプロイなどの一部のシナリオで制限される可能性があります。
-戦略的クラウド エンジニア Aakanksha Nikhare
-戦略的クラウド エンジニア Ayush Gupta