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 管理 API を使用して、productID というコレクションの統計データを表示します。このリクエストでは、毎日それぞれのプロダクト ID に送信されたメッセージ数の合計に基づいて、プロダクト ID のカスタム レポートを作成します。変数 {org_name} は組織名で置き換え、email:password は Apigee Edge のアカウントのメールアドレスとパスワードで置き換えます。

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 が含まれます。value には、1 日のリクエスト数が表示されます。

    {
      "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>
    

Statistics Collector ポリシーのデータを 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 ポリシーによって、分析サーバーに書き込まれるデータが決まります。それより前に Statistics Collector ポリシーで書き込まれたデータは失われます。

1 つの API プロキシで複数の Statistics Collector ポリシーを使用する方法としては、リクエスト フローまたはレスポンス フローに 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> 要素

name 属性に加えて、管理 UI プロキシ エディタのポリシーに別のわかりやすい名前でラベルを付けるために使います。

<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 です。 build
InvalidName Statistics Collector ポリシーの <Statistic> 要素に定義されている変数のデータを参照するために使用する名前がシステム定義の変数と競合する場合、API プロキシのデプロイに失敗します。システム定義の変数としては organizationenvironment などがあります。 build
DatatypeMissing Statistics Collector ポリシーの <Statistic> 要素の ref 属性に指定された変数の型が見つからないと、API プロキシのデプロイに失敗します。 build

障害変数

なし

スキーマ

ポリシータイプは XML スキーマ(.xsd)で定義されます。GitHub に参照用のポリシー スキーマが用意されています。

関連トピック

関連ページ