StatsCollector 政策

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

結果

可收集訊息中資料的統計資料,例如產品 ID、價格、REST 動作、用戶端和目標網址,以及訊息長度。資料可來自 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。每次提出要求時,統計資料收集器政策都會將這兩個變數的值寫入 Analytics 伺服器。

這個範例也會為每個變數設定選用的預設值,其中 product.id 的預設值為 999999,而 product.price 的預設值為 0。如果變數未定義,且您未指定預設值,系統就不會記錄該變數的資料。如果您指定預設值,系統會在變數未定義時記錄該值。

收集統計資料後,您可以使用 Edge 管理 UI 或 API 擷取統計資料。擷取統計資料時,您會分別參照為這些變數收集的資料,例如 productIDprice

存取統計資料

在本範例中,您會使用 Edge 管理 API 查看名為 productID 的集合統計資料。這項要求會根據每天為每個產品 ID 提交的訊息數量總和,為產品 ID 建立自訂報表。將變數 {org_name} 替換成貴機構名稱,並將 Apigee Edge 帳戶的電子郵件地址和密碼替換成 email:password

設定 timeRange 參數,納入收集資料的時間間隔。根據預設,系統不會提供超過目前日期六個月前的資料。如要存取六個月前的資料,請與 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 的變數

接著,您可以使用 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 訊息內容」。


關於統計資料收集器政策

執行時,統計資料收集器政策會記錄一或多個變數的目前值。這些變數可以是 Apigee 預先定義的流程變數,也可以是您定義的自訂變數。這項資料會寫入 Edge Analytics 伺服器。

如要存取政策收集的統計資料,請使用 Edge API 或 Edge 管理 UI。舉例來說,您可以使用 Edge 管理使用者介面建立自訂報表,以各種格式顯示收集到的資料。

如需使用 Statistics Collector 政策的完整教學課程,請參閱「使用自訂分析功能分析 API 訊息內容」。

政策的放置位置

您可以在 API Proxy 的要求或回應流程中加入 Statistics Collector 政策。不過,如果您在 Proxy 中放置多項 Statistics Collector 政策,則最後執行的政策會決定寫入 Analytics 伺服器的資料,先前任何 Statistics Collector 政策寫入的資料都會遺失。

在 API Proxy 中有多項 Statistics Collector 政策的其中一種情況,是您在要求或回應流程中有一項政策,而在錯誤處理常式中則有另一項政策。如果 API Proxy 發生錯誤,錯誤處理常式中的統計資料收集器會判斷收集的資料。您可以使用該統計資料收集器記錄故障相關資訊,或記錄您認為必要的任何其他資訊。無論要求/回應中的 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 個半形字元

視需要使用 <DisplayName> 元素,為政策加上標籤: 管理使用者介面 Proxy 編輯器,使用不同的自然語言名稱。

不適用 必填
continueOnError

如果設為「false」,系統會在政策失敗時傳回錯誤。這是可預期的情況 大多數政策的行為

如果設為 true,即使政策已發生,流程執行作業仍會繼續執行 失敗。

false 選用
enabled

如要強制執行政策,請設為 true

設為 false 即可停用政策。這項政策不會 仍會強制執行 政策。

true 選用
async

此屬性已淘汰。

false 已淘汰

&lt;DisplayName&gt;元素

name 屬性外,一併使用 管理 UI Proxy 編輯器,使用不同的自然語言名稱。

<DisplayName>Policy Display Name</DisplayName>
預設

不適用

如果省略這個元素,政策的 name 屬性值會是

存在必要性 選用
類型 字串

<Statistics>/<Statistic> 元素

<Statistics>
    <Statistic name="statName" ref="varName" type="refDataType">defaultStatValue</Statistic>
</Statistics>
屬性 說明 預設 存在必要性
名稱

用來參照指定變數所收集資料的名稱。查看 Analytics 資料時,請使用這個名稱參照透過 ref 屬性指定的變數所收集的資料。

如果要求或回應中未定義 ref 指定的變數,則 defaultStatValue 會指定為變數收集的值。如果省略預設值,當變數未定義時,系統就不會收集該變數的資料。

命名限制

自訂 Analytics 變數的命名限制如下:

N/A 必填
ref

您要收集統計資料的流程變數。這個變數可以是 Apigee 預先定義的流程變數,也可以是您在 API Proxy 中定義的自訂變數。

ref 屬性通常會參照 Extract Variables 政策定義的自訂變數。詳情請參閱「擷取變數政策」。

N/A 必填
類型

指定 ref 屬性所指定變數的資料類型。有效值包括: 字串/整數/浮點數/長整數/雙精度浮點數/布林值。

如果是字串類型的資料,請在自訂報表中將統計資料參照為維度。如果是數值型資料類型 (整數/浮點數/長整數/雙精度浮點數),請在自訂報表中將統計資料參照為「維度」或「指標」。詳情請參閱「管理自訂報表」。

只有在 ref 參照預先定義的 Apigee 流程變數,或類型是在「擷取變數」政策的 XML 酬載中宣告時,才能省略 type 的值。

字串 選用

錯誤參考資料

本節將說明在政策觸發錯誤時,系統會設定的錯誤訊息和流程變數。如果您要為 Proxy 開發錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。

執行階段錯誤

無。

部署錯誤

錯誤名稱 原因 修正
UnsupportedDatatype 如果 Statistics Collector 政策的 <Statistic> 元素中 ref 屬性指定的變數類型不受支援,則 API 代理程式會部署失敗。支援的資料類型為 stringintegerfloatlongdoubleboolean
InvalidName 如果用來參照統計資料收集器政策 <Statistic> 元素中定義的指定變數所收集資料的名稱,與系統定義的變數相衝突,則 API 代理程式會無法部署。部分已知的系統定義變數包括 organizationenvironment
DatatypeMissing 如果統計資料收集器政策的 <Statistic> 元素中缺少 ref 屬性指定的變數類型,則 API 代理程式會無法部署。

錯誤變數

無。

結構定義

每個政策類型都由 XML 架構 (.xsd) 定義。如需參考,請前往 GitHub 查看政策架構

相關主題

如需詳細資訊,請參閱: