StatsCollector 政策

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

内容

使您能够收集消息中的数据的统计信息,例如产品 ID、价格、REST 操作、客户端和目标网址以及消息长度。数据可能来自 Apigee 预定义的流变量或您定义的自定义变量。

统计信息数据传递到分析服务器,由分析服务器分析统计信息并生成报告。您可以使用 Edge 管理界面或 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。在每个请求中,统计信息收集器政策都会将这两个变量的值写入分析服务器。

本示例还为每个变量设置一个可选默认值,其中 product.id 的默认值为 999999,默认的 product.price 为 0。如果未定义某个变量,且未指定默认值,则系统不会为该变量记录任何数据。如果您指定默认值,则系统会在未定义变量时记录默认值。

收集统计数据后,您可以使用 Edge 管理界面或 API 检索统计信息。检索统计信息时,您需要将为这些变量收集的数据分别引用为 productIDprice

访问统计信息

在此示例中,您将使用 Edge Management API 查看名为 productID 的集合的统计数据。此请求会根据每天为每个产品 ID 提交的消息计数总和,生成产品 ID 的自定义报告。将 {org_name} 变量替换为您的组织名称,并将 email:password 替换成您在 Apigee Edge 上的帐号电子邮件地址和密码。

设置 timeRange 参数以包含收集数据的时间间隔。默认情况下,不可访问自当前日期起超过 6 个月的数据。如果您要访问六个月之前的数据,请与 Apigee Edge 支持团队联系。

$ 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>

统计信息收集器政策要求将收集的数据存储在变量中。 这些变量可以由 Apigee 预定义,也可以由您定义的自定义变量。

在此示例中,您将使用“提取变量”政策从包含天气信息的 XML 载荷中提取数据。本政策的目的:

  • 提取城市名称并将其写入名为 weather.location 的变量
  • 提取当前条件并将其写入名为 weather.condition 的变量

然后,您可以使用统计信息收集器政策来收集有关变量的信息,如下所示:

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

如需查看完整教程,了解如何针对 Stats Collector 政策从 XML 载荷中提取数据,请参阅使用自定义分析来分析 API 消息内容


关于统计信息收集器政策

执行时,统计信息收集器政策会记录一个或多个变量的当前值。这些变量可以是 Apigee 预定义的流变量,也可以是您定义的自定义变量。这些数据会被写入边缘分析服务器。

如需访问由政策收集的统计数据,您可以使用 Edge API 或 Edge 管理界面。例如,您可以使用 Edge 管理界面创建以各种格式显示所收集数据的自定义报告。

如需查看使用统计信息收集器政策的完整教程,请参阅使用自定义分析来分析 API 消息内容

设置政策的位置

您可以将统计信息收集器政策放入 API 代理的请求或响应流程中。但是,如果您在代理中放置多项统计信息收集器政策,则要执行的最后一项政策将决定写入分析服务器的数据,并且之前的任何统计信息收集器政策写入的数据都将丢失。

一个 API 代理中可能有多个统计信息收集器政策的一种情况是,您在请求或响应流中有一项政策,而在故障处理程序中有一项政策。如果 API 代理中出现故障,则故障处理程序中的统计信息收集器会确定收集的数据。您可以使用该统计信息收集器记录有关故障的信息,或记录您认为必要的任何其他信息。无论请求/响应中的统计信息收集器是否已执行,故障处理程序中的统计信息收集器都会确定收集的数据。

如需了解详情,请参阅处理故障

元素参考

元素参考介绍了统计信息收集器政策的元素和属性。

<?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 个字符。

(可选)使用 <DisplayName> 元素在管理界面代理编辑器中给政策添加不同的自然语言名称标签。

不适用 必需
continueOnError

设置为 false 可在政策失败时返回错误。这是大多数政策的预期行为。

设置为 true,即使在政策失败后,仍可以继续执行流。

false 可选
enabled

设置为 true 可强制执行政策。

设为 false关闭政策。即使政策仍附加到某个流,也不会强制执行该政策。

true 可选
async

此特性已弃用。

false 已弃用

<DisplayName> 元素

除了用于 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

要为其收集统计信息的 flow 变量。此变量可以是 Apigee 预定义的流变量,也可以是您在 API 代理中定义的自定义变量。

ref 属性通常会引用由“提取变量”政策定义的自定义变量。如需了解详情,请参阅提取变量政策

不适用 必需
类型

指定 ref 属性指定的变量的数据类型。有效值为:string/integer/float/long/double/boolean。

对于字符串类型的数据,请在自定义报告中将统计数据作为维度引用。对于数值数据类型(整数/浮点数/长/双精度),请将自定义报告中的统计数据作为维度指标引用。如需了解详情,请参阅管理自定义报告

仅当 ref 引用预定义的 Apigee 流变量或在“提取变量”政策的 XML 载荷中声明类型时,才可以省略 type 的值。

string 可选

错误参考信息

本部分介绍当此政策触发错误时所设置的错误消息和流变量。在为代理开发故障规则时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

无。

部署错误

错误名称 原因 修复
UnsupportedDatatype 如果统计信息收集器政策的 <Statistic> 元素中的 ref 属性指定的变量类型不受支持,则 API 代理的部署会失败。支持的数据类型包括 stringintegerfloatlongdoubleboolean
InvalidName 如果用于引用为统计信息收集器政策的 <Statistic> 元素中定义的指定变量收集的数据的名称与系统定义的变量冲突,则 API 代理的部署将失败。一些已知的系统定义变量包括 organizationenvironment
DatatypeMissing 如果缺少统计信息收集器政策的 <Statistic> 元素中的 ref 属性指定的变量类型,则表示 API 代理的部署会失败。

故障变量

无。

架构

每种政策类型均由 XML 架构 (.xsd) 定义。GitHub 提供了政策架构作为参考。

相关主题

如需了解详情,请参阅以下主题: