Analytics イベント API の確認

API Manager は、管理されている API ごとに分析データを収集します。 イベントデータをクエリおよび表示するチャートを作成できます。Analytics イベント API を使用して、未加工のイベントデータを照会し、そのデータを API エンドポイント経由で公開するレポートを作成できます。作成したレポートとチャートには、データが環境別に表示されます。

複数の API にわたるレポートを作成したり、同じ API の別のレポートを作成したりできます。Analytics イベント API では 1 か月のイベント保持ポリシーが提供され、データは最大 10 分の遅延で利用できます。

Analytics イベント API では 10 要求/分の使用制限が適用され、1 要求につき最大 20,000 イベントを使用できます。10 要求/分を超える要求レートは抑制されます。

制限事項

  • イベント API はアドホックレポートの作成を目的として設計されたものであり、データエクスポートツールとして使用することは意図されていません。データをエクスポートする必要がある場合は、次の推奨事項に留意してください。

    • コールが複数の期間に重ならないようにします。

    • 必要なすべてのデータを 1 回の要求で取得します。各 API で同じ要求を繰り返さないでください。

    • 1 分間にイベント API を複数回コールしないでください。

    • API の使用が 10 分あたり 20,000 件のコールを超える組織では、別のデータエクスポート方法を考慮してください。使用イベントを監視システムに直接送信するように API ゲートウェイを設定できます。

  • イベント API はデータ同期を目的とするものではありません。
    外部システムとのイベントのデータ同期について関心がある場合は、​Analytics イベント転送​を参照してください。

レポートの作成

たとえば、結果としてポリシー違反になった API イベントを見つけるためのレポートを作成する方法を以下の手順で説明します。レート制限や IP ブラックリストなど、ポリシー違反のために拒否されたイベントを見つける必要があるとします。この方法でデータを絞り込むには、ステップ 5 として、[Fields (項目)] で [Violated Policy Name (違反ポリシー名)] を選択します。

  1. [API Manager] > [Analytics] > [Manage Reports (レポートを管理)] で [New (新規)] をクリックし、新しいレポートを作成します。

  2. [Create Report (レポートを作成)] でデータソース、範囲、形式を選択します。

  3. [Fields (項目)] で [Violated Policy Name (違反ポリシー名)] を選択します。

    URL が表示されます。レポートを保存した後、この URL を使用してレポートを表示できます。指定したデータソースのデータが使用可能になる日付が表示されます。

  4. レポートを保存します。

    レポートが使用可能になったら、この URL に移動してレポートを表示します。

ブラウザでのレポートの実行

次の手順はレポートの実行方法を示しています。API Analytics では、API で使用できるデータがない場合の警告メッセージを含め、API でデータが使用可能になる時点の開始点が示されます。

[Manage Reports (レポートを管理)]​ ページで、指定したレポートの ​[Run (実行)]​ をクリックします。

anev_running_report2

レポートを実行すると、レポートで指定したパラメータに応じてすべての未加工の分析データが CSV または JSON ファイルに含まれます。

curl を使用したレポート情報の表示

この手順では、curl コマンドを実行して $TOKEN の値を取得します。コマンドはこの応答の access_token JSON プロパティを取得します。

認証ヘッダーの形式は、Authorization: ​Bearer {$TOKEN.access_token}​ です。

jq コマンドライン JSON プロセッサの使用は、アクセストークン値を取得するための可能なソリューションの 1 つです。このアプリケーション、またはこの手順で同じ機能を果たすアプリケーションをダウンロードしてインストールします。

レポート情報をプログラムで表示する

  1. 新しいターミナルウィンドウを開き、次のコマンドを実行します。

    TOKEN=$(curl -s https://anypoint.mulesoft.com/accounts/login -d "username=<YOUR-USERNAME>&password=<YOUR-PASSWORD>" | jq -r .access_token)
  2. このコマンドは、Anypoint Platform の認証サーバに要求を送信し、要求が成功すると、アクセストークンを返して ​$TOKEN​ 変数に保存します。この変数の値は次のように表示されます。

    {
     "access_token": "54545454-5454-5454-5454-545454545454",
     "token_type": "Bearer",
     "redirectUrl": "/accounts/#/cs/profile/home"
     }
  3. アクセストークンを受信したら、レポートの Analytics レポート API エンドポイントへの要求内の ​Authorization​ ヘッダーにアクセストークンを付加する必要があります。このエンドポイントへの要求を作成するには、Analytics ダッシュボードの ​[Manage Reports (レポートを管理)]​ ページから要求をコピーします。前のステップからの ​$TOKEN​ 変数を使用して、以下のように変数を次の要求に含めます。

    curl -H "Authorization: Bearer $TOKEN" "https://anypoint.mulesoft.com/analytics/1.0/<ORGANIZATION_ID>/events?format=csv&startDate=2016-01-01&endDate=2016-12-31&fields=Application%20Name.Client%20IP.Resource%20Path > output.csv"
  4. 要求が成功したら、(要求に応じて) 応答に CSV ファイルが含まれます。これは、指定された名前のファイル (​curl​ 要求を実行したディレクトリ内の ​output.csv)​) としてダウンロードされます。

2 つの curl コマンドを組み合わせてコマンドプロンプトウィンドウに値を表示するシェルスクリプトの例を次に示します。

TOKEN=$(curl -s https://anypoint.mulesoft.com/accounts/login -d "username=myusername&password=mypassword" | jq -r .access_token)
curl -H "Authorization: Bearer $TOKEN" "https://anypoint.mulesoft.com/analytics/1.0/42424242-4242-4242-4242-424242424242/events?format=csv&startDate=2016-01-01&endDate=2016-11-10&fields=Application%20Name.Client%20IP.Resource%20Path"
echo;echo

このコマンドの出力例を次に示します。

"Application Name","Client IP","Resource Path",Timestamp,"API ID","API Version ID","API Name","API Version Name"
"Las Vegas T-Shirt serviceLas Vegas T-Shirt serviceLas Vegas",83.178.96.0,/,2016-10-03T04:27:02.072Z,61460,63811,"test api contracts",1
"Las Vegas T-Shirt serviceLas Vegas T-Shirt serviceLas Vegas",83.178.96.0,/,2016-10-03T05:03:38.774Z,61460,63811,"test api contracts",1
  ...

複数環境のサポート

複数の環境を有効にしている組織では、上記の方法で照会した API イベントは「未分類」の環境のみに属します。特定の環境の API でイベントを要求するには、環境セレクタで環境を選択し、実行するレポートを作成します。レポートは環境ごとに保存されるため、異なる環境には異なるレポートが存在します。UI からレポート URL をコピーします。この URL には、組織 ID に加えて ​/environment/{Environment ID}​ も含まれます。組織と環境の作成時に Anypoint Platform は一意かつ不変の組織 ID と環境 ID を割り当てます。

レポート URL に環境 ID を追加するだけで、指定した環境のイベントにアクセスできます。API ID は環境により異なります。たとえば、QA 内の API の ID は本番内のその ID とは異なります。

コマンドオプションの確認

以下のオプションを curl コマンドに追加できます。

オプション 説明

apiIds

クエリに含める API ID のカンマ区切りリスト。省略するか、​all​ または ​*​ を指定すると、すべての API が含まれます。

型:​ string
必須:​ いいえ
例:​ ​appIds=42,54

apiVersionIds

クエリに含める API バージョン ID のカンマ区切りリスト。 省略するか、​all​ または ​*​ を指定すると、すべての API バージョンが含まれます。 API ID の値が指定されていない場合、無視されます。

型:​ string
必須:​ いいえ
例:​ ​apiVersionIds=42,54

duration

レポートで返されるデータの対象の期間。数量を表す整数値と、単位を表す 1 文字のサフィックスで構成されます。

サフィックスは次のいずれかです。

  • d​: 日

  • h​: 時

  • m​: 分

  • s​: 秒

1 週間を対象とするには、期間として ​7d​ を指定します。30 秒を対象とするには、​30s​ を指定します。

型:​ string
必須:​ いいえ
例:​ ​duration=45m

fields

レポートに含める項目。CSV 出力では必須、JSON 出力では省略可能です。 項目のリストはカンマまたはピリオドで区切ることができます。スペースには ​%20​ を使用します。​[レポートのデータ項目]​ の 任意の値を使用できます。 タイムスタンプ、API 名、API ID、API バージョン、API バージョン ID は常に含まれます。

型:​ string
必須:​ いいえ
例:​ ​fields=Hardware%20Platform.Client%20IP.Resource%20Path

形式

返される値のシリアル化形式を決定します。​csv​ または ​json​ を入力します。

型:​ string
必須:​ はい
例:​ ​format=csv

maxResults

返すイベントの最大数。デフォルト値は ​20000​ です。+

型:​ integer
必須:​ いいえ
例:​ ​maxResults=3

startDate

開始日時。​http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTimeParser()​[ISO 日時パーサー] を参照してください。

型:​ date
必須:​ いいえ
例:​ ​startDate=2016-01-01T08:15:30-05:00

endDate

終了日時。​http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTimeParser()​ を参照してください。

型:​ date
必須:​ いいえ
例:​ ​endDate=2016-11-10

pathPrefix

結果をイベントリソースパスで絞り込みます。特定の REST リソースルートに対してレポートを実行する場合に使用します。

型:​ string
必須:​ いいえ
例:​ ​pathPrefix=/products/electronics

レポートのデータ項目の確認

レポートでは、使用可能な 1 つ、複数、またはすべてのデータ項目のデータをクエリできます。各項目について以下の表で説明します。

データ項目名 説明

Application (アプリケーション)

受信 API 要求に関連付けられたクライアント ID。

Application Name (アプリケーション名)

API 要求を実行したアプリケーションの名前 (要求と共にクライアント ID が渡された場合のみ使用可能)。

Browser (ブラウザ)

受信 API 要求に関連付けられたブラウザ種別。

City (市区郡)

API 要求の実行元の市区郡 (クライアントの IP アドレスによる推定)。

Client IP (クライアント IP)

API 要求を実行したクライアントの IP アドレス。

Continent (大陸)

API 要求の実行元の大陸 (クライアントの IP アドレスによる推定)。

Country (国)

API 要求の実行元の国 (クライアントの IP アドレスによる推定)。

Hardware Platform (ハードウェアプラットフォーム)

要求を実行したクライアントのハードウェア種別 (モバイル、タブレット、デスクトップなど)。

メッセージ ID

メッセージ ID の値。

OS Family (OS ファミリ)

クライアントの OS 種別: Mac OS X、iOS、Windows、Linux。

OS Major Version (OS メジャーバージョン)

オペレーティングシステムのメジャーバージョン。

OS Minor Version (OS マイナーバージョン)

オペレーティングシステムのマイナーバージョン。

OS Version (OS バージョン)

オペレーティングシステムのバージョン。

Postal Code (郵便番号)

API 要求の実行元の郵便番号 (クライアントの IP アドレスによる推定)。

Request Outcome (要求結果)

要求が成功したか、結果としてポリシー違反になったかを示します。

Request Size (要求サイズ)

受信クライアント要求のサイズ (バイト単位)。

Resource Path (リソースパス)

クライアント要求のパス。

Response Size (応答サイズ)

API 応答のサイズ (バイト単位)。以下の注意事項を参照してください。

Response Time (応答時間)

API 要求の処理時間。

Status Code (状況コード)

応答の HTTP 状況コード。

Timezone (タイムゾーン)

API 要求の実行元のタイムゾーン (クライアントの IP アドレスによる推定)。

User Agent Name (ユーザエージェント名)

受信クライアント要求の完全なユーザエージェント文字列。

User Agent Version (ユーザエージェントバージョン)

受信クライアント要求のユーザエージェント文字列のバージョン。

Verb (動詞)

API クライアント要求に関連付けられた REST 動詞 (GET、POST、PATCH など)。

Violated Policy Name (違反ポリシー名)

API 要求により違反となったポリシー (ある場合) の名前。

Content-Length ヘッダーが存在する場合、[Response Size (応答サイズ)] はその値に設定されます。Content-Length ヘッダーが存在せず、ペイロードが文字列の場合、Analytics は文字列の長さを計算し、その値を報告します。Content-Length ヘッダーが存在せず、ペイロードが文字列ではない場合、Analytics は応答サイズを -1 として報告します。たとえば、返された出力が DataWeave ストリームであり、Content-Length ヘッダーが存在しない場合、値が文字列ではないため、Analytics は応答サイズを報告しません。ただし、アプリケーションで文字列変換が実行されている場合、応答サイズは表示されます。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub