StatisticsCollector ポリシー

概要

プロダクト ID、料金、REST アクション、クライアントとターゲットの URL、メッセージ長など、メッセージに含まれているデータの統計情報を収集できます。データは、Apigee で定義されているフロー変数や、ユーザーが定義したカスタム変数から取得できます。

統計情報のデータは分析サーバーに渡され、分析とレポートの生成が行われます。生成されたレポートは、Edge 管理 UI または Edge API で表示できます。

サンプル

基本的な例

<StatisticsCollector name="publishPurchaseDetails">
  <Statistics>
    <Statistic name="productID" ref="product.id" type="string">999999</Statistic>
    <Statistic name="price" ref="product.price" type="string">0</Statistic>
  </Statistics>
</StatisticsCollector>

この例では、product.idproduct.price という 2 つのカスタム変数に関する統計情報を収集します。リクエストごとに、Statistics Collector ポリシーがこの 2 つの変数の値を分析サーバーに書き込みます。

この例では、各変数のオプションのデフォルト値も設定します。ここで、product.id のデフォルト値は 999999、デフォルトの product.price は 0 です。変数が未定義で、デフォルト値を指定していない場合、データは変数に記録されません。変数が未定義で、デフォルト値を指定した場合、デフォルト値が記録されます。

統計情報データを収集したら、Edge 管理 UI または API を使用して統計を取得できます。統計情報を取得するときは、これらの変数について収集されたデータをそれぞれ productIDprice として参照します。

統計にアクセスする

この例では、Edge Management API を使用して、productID というコレクションの統計情報データを表示します。このリクエストでは、各日の各プロダクト ID に対する送信メッセージ件数の合計に基づくプロダクト ID のカスタム レポートを作成します。変数 {org_name} を組織名に置き換え、Apigee Edge のアカウントのメールアドレスとパスワードを email:password に置き換えます。

timeRange パラメータを設定して、データが収集される時間間隔を含めます。デフォルトでは、現在の日付から 6 か月以上経過しているデータはアクセスできません。6 か月以上前のデータにアクセスするには、Apigee のサポートにお問い合わせください。

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/stats/productID?"select=sum(message_count)&timeRange=1/19/2015%2000:00~6/21/2015%2000:00&timeUnit=day"
-u email:password

レスポンスの name フィールドにはプロダクト ID が含まれ、値は各日のリクエスト数を示します。

{
  "environments" : [ {
    "dimensions" : [ {
      "metrics" : [ {
        "name" : "sum(message_count)",
        "values" : [ {
          "timestamp" : 1353369600000,
          "value" : "4.0"
        } ]
      } ],
      "name" : "52"
    }, {
      "metrics" : [ {
        "name" : "sum(message_count)",
        "values" : [ {
          "timestamp" : 1353369600000,
          "value" : "19.0"
        } ]
      } ],
      "name" : "14"
    }, ...
  } ],
  "metaData" : {
    "samplingRate" : "100"
  }
}

収集するデータを抽出する

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="GetWeatherData">
    <VariablePrefix>weather</VariablePrefix>
    <XMLPayload>
       <Namespaces>
          <Namespace prefix="yweather">http://xml.weather.yahoo.com/ns/rss/1.0</Namespace>
       </Namespaces>
       <Variable name="location" type="string">
          <XPath>/rss/channel/yweather:location/@city</XPath>
       </Variable>
       <Variable name="condition" type="string">
          <XPath>/rss/channel/item/yweather:condition/@text</XPath>
       </Variable>
    </XMLPayload>
</ExtractVariables>

Statistics Collector ポリシーでは、収集したデータを変数に保存する必要があります。 データは、Apigee が事前に定義したフロー変数か、ユーザーのカスタム変数に保存されます。

この例では、Extract Variables ポリシーを使用して、気象情報を含む XML ペイロードからデータを抽出します。このポリシーでは次のことを行います。

  • 都市の名前を抽出し、weather.location という名前の変数に書き込みます。
  • 現在の条件を抽出し、weather.condition という名前の変数に書き込みます。

次のように Statistics Collector ポリシーを使用して、変数に関する情報を収集します。

<StatisticsCollector name="publishPurchaseDetails">
  <Statistics>
    <Statistic name="weatherLocation" ref="weather.location" type="string"></Statistic>
    <Statistic name="weatherCondition" ref="weather.condition" type="string"></Statistic>
  </Statistics>
</StatisticsCollector>

統計コレクション ポリシーの XML ペイロードからデータを抽出する完全なチュートリアルについては、カスタム分析を使用して API メッセージ コンテンツを分析するをご覧ください。


Statistics Collector ポリシーについて

Statistics Collector ポリシーを実行すると、1 つ以上の変数の現在値が記録されます。Apigee が事前に定義したフロー変数またはユーザーのカスタム変数のデータが記録されます。このデータは、Edge 分析サーバーに書き込まれます。

ポリシーで収集された統計情報にアクセスするには、Edge API または Edge 管理 UI を使用します。たとえば、Edge 管理 UI を使用すると、カスタム レポートを作成し、収集されたデータをさまざまな形式で表示できます。

Statistics Collector ポリシーの使用方法のについての詳しいチュートリアルは、カスタム分析を使用して API メッセージ コンテンツを分析するをご覧ください。

ポリシーの配置場所

Statistics Collector ポリシーは、API プロキシのリクエスト フローまたはレスポンス フローで使用できます。ただし、複数の Statistics Collector ポリシーをプロキシに組み込むと、最後に実行された Statistics Collector ポリシーによって、Analytics サーバーに書き込まれるデータが決定され、それより前の Statistics Collector ポリシーによって書き込まれたデータは失われます。

1 つの API プロキシで複数の Statistics Collector ポリシーを使用するシナリオの 1 つとして、リクエスト フローまたはレスポンス フローに 1 つのポリシーを適用し、障害ハンドラに別のポリシーを適用する場合があります。API プロキシで障害が発生した場合は、障害ハンドラの Statistics Collector によって、収集されるデータが決定されます。この Statistics Collector は障害に関する情報の記録に使用します。あるいは、他に必要と思われる情報の記録に使用します。リクエスト / レスポンスの Statistics Collector が実行済みかどうかに関係なく、障害ハンドラの Statistics Collector により、収集されるデータが決まります。

詳細については、障害の処理をご覧ください。

要素リファレンス

この要素リファレンスでは、Statistics Collector ポリシーの要素と属性について説明します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<StatisticsCollector async="false" continueOnError="false" enabled="true" name="Statistics-Collector-1">
    <DisplayName>Statistics Collector 1</DisplayName>
    <Statistics>
        <Statistic name="statName" ref="varName" type="refDataType">defaultStatValue</Statistic>
    </Statistics>
</StatisticsCollector>

<StatisticsCollector> 属性

<StatisticsCollector async="false" continueOnError="false" enabled="true" name="Stats-1">

次の表に、すべてのポリシーの親要素に共通する属性を示します。

属性 説明 デフォルト 要否
name

ポリシーの内部名。name 属性の値には、英字、数字、スペース、ハイフン、アンダースコア、ピリオドを使用できます。この値は 255 文字を超えることはできません。

管理 UI プロキシ エディタで <DisplayName> 要素を追加して、ポリシーのラベルに使用する別の自然言語名を指定することもできます。

なし 必須
continueOnError

ポリシーが失敗した場合にエラーを返すには、false に設定します。これは、ほとんどのポリシーで想定される動作です。

ポリシーが失敗した後もフローの実行を続行する場合は、true に設定します。

false 省略可
enabled

ポリシーを適用するには、true に設定します。

ポリシーを無効にするには、false に設定します。ポリシーがフローに接続されている場合でも適用されません。

true 省略可
async

この属性は非推奨となりました。

false 非推奨

<DisplayName> 要素

管理 UI プロキシ エディタで name 属性と一緒に使用して、ポリシーのラベルに使用する自然言語名を指定します。

<DisplayName>Policy Display Name</DisplayName>
デフォルト

なし

この要素を省略した場合、ポリシーの name 属性の値が使用されます。

要否 省略可
タイプ 文字列

<Statistics>/<Statistic> 要素

<Statistics>
    <Statistic name="statName" ref="varName" type="refDataType">defaultStatValue</Statistic>
</Statistics>
属性 説明 デフォルト 要否
name

特定の変数に収集されたデータの参照に使用する名前。分析データを表示するときは、この名前を使用して、ref 属性で指定された変数について収集されたデータを参照します。

ref で指定された変数がリクエストまたはレスポンスで定義されていない場合、defaultStatValue は変数に対して収集された値を指定します。デフォルト値を省略し、変数が未定義の場合、この変数にデータは収集されません。

命名規則

カスタム分析の変数には次の命名規則が適用されます。

なし 必須
ref

統計情報を収集するフロー変数。この変数は、Apigee が事前に定義したフロー変数か、ユーザーが API プロキシに定義したカスタム変数になります。

通常、ref 属性は、Extract Variables ポリシーで定義されたカスタム変数を参照します。詳細については、Extract Variables ポリシーをご覧ください。

なし 必須
type

ref 属性で指定された変数のデータ型を指定します。有効な値は、string / integer / float / long / double / boolean です。

string データ型の場合は、カスタム レポートで統計データをディメンションとして参照します。データ型が数値(integer / float / long / double)の場合、カスタム レポートの統計データはディメンションまたは指標として参照されます。詳細については、カスタム レポートの管理をご覧ください。

ref が事前定義の Apigee フロー変数を参照しているか、Extract Variables ポリシーの XML ペイロードで宣言されたデータ型を参照している場合、type の値は省略できます。

文字列 省略可

エラー リファレンス

このセクションでは、このポリシーによってエラーがトリガーされたときに設定されるエラー メッセージとフロー変数について説明します。これは、プロキシの障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきこと障害の処理をご覧ください。

ランタイム エラー

なし。

デプロイエラー

エラー名 原因 修正
UnsupportedDatatype Statistics Collector ポリシーの <Statistic> 要素の ref 属性で指定された変数の型がサポートされていない場合、API プロキシのデプロイに失敗します。サポートされているデータ型は、stringintegerfloatlongdoubleboolean です。
InvalidName Statistics Collector ポリシーの <Statistic> 要素に定義されている変数のデータを参照するために使用する名前がシステム定義の変数と競合する場合、API プロキシのデプロイに失敗します。既知のシステム定義の変数としては、organizationenvironment などがあります。
DatatypeMissing Statistics Collector ポリシーの <Statistic> 要素の ref 属性で指定された変数の型が見つからない場合、API プロキシのデプロイに失敗します。

障害変数

なし。

スキーマ

各ポリシータイプは XML スキーマ(.xsd)によって定義されます。参照用のポリシー スキーマは GitHub から入手できます。

関連トピック

関連ページ