您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
Apigee Edge 會記錄各種 API 運作與業務資料。從這類資料得出的指標有助於監控作業和業務。舉例來說,您可以透過 Edge API Analytics 判斷哪些 API 的運作效能良好或不佳、哪些開發人員帶來的流量價值最高,以及哪些應用程式造成後端服務的問題最多。
為方便存取這項指標資料,Edge 會公開 RESTful API。如需自動執行特定 Analytics 功能,例如使用自動化用戶端或指令碼定期擷取指標,可以使用指標 API。您也可以使用 API,以自訂小工具的形式建立自己的視覺化內容,並嵌入入口網站或自訂應用程式。
如要瞭解如何在 API Edge 管理使用者介面中使用 Analytics,請參閱「API 數據分析總覽」。
關於指標 API
Edge 提供兩項指標 API:
取得指標 會傳回機構和環境 在一段時間 (例如一小時、一天或一週) 內的指標。
舉例來說,您想取得前一週的資料:
- 政策錯誤數量
- 平均回覆時間
- 總流量
依維度取得指標 傳回機構和環境在一段時間內的指標,並依維度分組。
舉例來說,您可以使用維度,依據 API 產品、API Proxy 和開發人員電子郵件,將上週的指標分組,以取得下列資訊:
- 每個 API 產品的政策錯誤數
- 每個 API Proxy 的平均回應時間
- 每個開發人員電子郵件地址的總流量
指標 API 配額簡介
Edge 會對這些呼叫作業強制執行下列配額。配額取決於處理通話的後端系統:
- Postgres:每分鐘 40 次呼叫
- BigQuery:每分鐘 12 次呼叫
檢查回應物件,判斷處理呼叫的後端系統。
每個回應物件都包含 metaData 屬性,列出在 Source 屬性中處理呼叫的服務。舉例來說,如果是 Postgres:
{
...
"metaData": {
"errors": [],
"notices": [
"Source:Postgres",
"Table used: xxxxxx.yyyyy",
"query served by:111-222-333"
]
}
}如果是 BigQuery,Source 屬性為:
"Source:Big Query"
如果超出呼叫配額,API 會傳回 HTTP 429 回應。
使用 Management API 取得指標
這兩項 API 的主要差異在於,「取得指標」會傳回整個機構和環境的原始指標,而「依維度取得指標」則可讓您依不同實體類型 (例如 API 產品、開發人員和應用程式) 分組指標。
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats如要使用「依維度取得指標」API,請在 /stats 後方於網址中加入額外資源,指定所需的維度:
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats/dimension舉例來說,如要取得依 API Proxy 分組的指標,請使用下列網址呼叫 Management API:
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats/apiproxy指定要傳回的指標
無論是「取得指標」或「依維度取得指標」 API,您都可以使用 select 查詢參數指定要擷取的指標,以及選用的匯總函式,格式如下:
?select=metric
或是:
?select=aggFunction(metric)
其中:
- 指標會指定要傳回的資料。例如 API 要求數、快取命中次數或政策錯誤數。請參閱指標資料表,瞭解要搭配
select查詢參數使用的指標名稱。 aggFunction 指定要對指標執行的選用匯總函式。舉例來說,您可以將下列匯總函式與處理延遲指標搭配使用:
avg:傳回平均處理延遲時間。min:傳回最低處理延遲時間。max:傳回處理延遲時間上限。-
sum:傳回所有處理延遲時間的總和。
並非所有指標都支援所有匯總函式。指標說明文件包含一個表格,其中會指定指標名稱和指標支援的函式 (
sum、avg、min、max)。
舉例來說,如要傳回每秒的平均交易數 (即 API Proxy 要求數):
?select=tps
請注意,這個範例不需要匯總函式。下一個範例會使用匯總函式,傳回快取命中次數的總和:
?select=sum(cache_hit)
您可以在單一 API 呼叫中傳回多項指標。如要取得政策錯誤總數和平均要求大小的指標,請使用以半形逗號分隔的指標清單,設定 select 查詢參數:
?select=sum(policy_error),avg(request_size)
指定時間範圍
指標 API 會傳回指定時間範圍內的資料。使用 timeRange 查詢參數指定時間範圍,格式如下:
?timeRange=MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM
請注意 HH:MM 前的 %20。timeRange 參數在 HH:MM 前需要網址編碼的空格字元,或 + 字元,如:MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM。
例如:
?timeRange=03/01/2018%2000:00~03/30/2018%2023:59
請勿使用 24:00,因為這會換算成 00:00。請改用 23:59。
使用分隔符號
如要在 API 呼叫中分隔多個維度,請使用半形逗號 (,) 做為分隔符號。舉例來說,在 API 呼叫中
curl https://api.enterprise.apigee.com/v1/o/myorg/e/prod/stats/apis,apps?select=sum(message_count)&timeRange=9/24/2018%2000:00~10/25/2018%2000:00&timeUnit=day
維度 apis 和 apps 以 , 分隔。
API 呼叫範例
本節包含使用「取得指標」和「依維度取得指標」 API 的範例。如需其他範例,請參閱「Metrics API 範例」。
傳回一個月內對 API 發出的呼叫總數
如要查看貴機構和環境在一個月內對所有 API 發出的呼叫總數,請使用「Get metrics」API:
curl -v "https://api.enterprise.apigee.com/v1/o/{org}/e/{env}/stats/?select=sum(message_count)&timeRange=03/01/2018%2000:00~03/31/2018%2023:59" \
-u email:password
回覆範例:
{
"environments": [
{
"metrics": [
{
"name": "sum(message_count)",
"values": [
"7.44944088E8"
]
}
],
"name": "prod"
}
],
...
}傳回兩天內每個 API Proxy 的訊息總數
在這個範例中,您會傳回所有 API Proxy 在兩天內收到的要求數量的指標。select 查詢參數會為維度 apiproxy 上的指標 message_count 定義匯總函式 sum。這份報表會傳回 2018 年 6 月 20 日初至 2018 年 6 月 21 日底 (世界標準時間) 期間收到的流量,所有 API 的要求訊息輸送量:
curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59" \
-u email:password
回覆範例:
{
"environments" : [ {
"dimensions" : [ {
"metrics" : [ {
"name" : "sum(message_count)",
"values" : [ {
"timestamp" : 1498003200000,
"value" : "1100.0"
} ]
} ],
"name" : "target-reroute"
} ],
"name" : "test"
} ]...
}這項回應表示在 2018 年 6 月 20 日到 2018 年 6 月 21 日之間,測試環境中名為「target-reroute」的 API Proxy 收到 1100 則訊息。
如要取得其他維度的指標,請將不同維度指定為 URI 參數。舉例來說,您可以指定 developer_app 維度,擷取開發人員應用程式的指標。下列 API 呼叫會傳回指定時間間隔內,任何應用程式的總處理量 (收到的訊息):
curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/developer_app?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59&timeUnit=day" \
-u email:password回覆範例:
{
"environments": [
{
"dimensions": [
{
"metrics": [
{
"name": "sum(message_count)",
"values": [
{
"timestamp": 1498003200000,
"value": "886.0"
}
]
}
],
"name": "Test-App"
},
{
"metrics": [
{
"name": "sum(message_count)",
"values": [
{
"timestamp": 1498003200000,
"value": "6645.0"
}
]
}
],
"name": "johndoe_app"
},
{
"metrics": [
{
"name": "sum(message_count)",
"values": [
{
"timestamp": 1498003200000,
"value": "1109.0"
}
]
}
],
"name": "marys_app"
}
]...
}依相對排名排序結果
許多時候,您只想取得部分資料的指標結果。通常您需要取得「前 10 名」的結果,例如「前 10 個最慢的 API」、「前 10 個最活躍的應用程式」。如要執行這項操作,請在要求中加入 topk 查詢參數。
舉例來說,您可能想知道以處理量衡量的頂尖開發人員是誰,或是表現最差的開發人員 (即「top slowest」) 目標 API 的延遲時間。
topk (代表「前 k 個」實體) 可針對與特定指標最高值相關聯的實體產生報表。您可以藉此篩選指標,找出符合特定條件的實體清單。舉例來說,如要找出上週最容易發生錯誤的目標網址,請在要求中附加 topk 參數,並將值設為 1:
curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/target_url?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&topk=1" \
-u email:password
{
"environments": [
{
"dimensions": [
{
"metrics": [
{
"name": "sum(is_error)",
"values": [
{
"timestamp": 1494201600000,
"value": "12077.0"
}
]
}
],
"name": "http://api.company.com"
}
]...
}這項要求的結果是一組指標,顯示最容易發生錯誤的目標網址是 http://api.company.com。
您也可以使用 topk 參數,依最高處理量排序 API。以下範例會擷取上週最高總處理量 API 的指標:
curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(message_count)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=day&sortby=sum(message_count)&sort=DESC&topk=1" \
-u email:password
回應範例
{
"environments": [
{
"dimensions": [
{
"metrics": [
{
"name": "sum(message_count)",
"values": [
{
"timestamp": 1494720000000,
"value": "5750.0"
},
{
"timestamp": 1494633600000,
"value": "5752.0"
},
{
"timestamp": 1494547200000,
"value": "5747.0"
},
{
"timestamp": 1494460800000,
"value": "5751.0"
},
{
"timestamp": 1494374400000,
"value": "5753.0"
},
{
"timestamp": 1494288000000,
"value": "5751.0"
},
{
"timestamp": 1494201600000,
"value": "5752.0"
}
]
}
],
"name": "testCache"
}
],
"name": "test"
}
]...
}正在篩選結果
如要提高精細度,可以篩選結果來限制傳回的資料。使用篩選器時,您必須將維度做為篩選器屬性。
舉例來說,假設您需要從後端服務擷取錯誤計數,並依要求的 HTTP 動詞篩選。您的目標是找出每個後端服務產生錯誤的 POST 和 PUT 要求數量。如要這麼做,請使用維度 target_url 和篩選器 request_verb:
curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/target_url?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&filter=(request_verb%20in%20'POST','PUT')" \
-u email:password
回應範例:
{
"environments" : [
{
"dimensions" : [
{
"metrics" : [
{
"name" : "sum(is_error)",
"values" : [
{
"timestamp" : 1519516800000,
"value" : "1.0"
}
]
}
],
"name" : "testCache"
}
],
"name" : "test"
}
]...
}結果分頁
在實際工作環境中,部分 Edge Analytics API 要求會傳回非常大的資料集。為了方便在以 UI 為基礎的應用程式環境中顯示大型資料集,API 原生支援分頁功能。
如要為結果分頁,請使用 offset 和 limit 查詢參數,以及 sortby 排序參數,確保項目排序一致。
舉例來說,下列要求可能會傳回大型資料集,因為這項要求會擷取產品環境中所有 API 上週的所有錯誤指標。
curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)" \
-u email:password
如果您的 UI 型應用程式每頁可合理顯示 50 個結果,您可以將限制設為 50。由於 0 算作第一個項目,因此下列呼叫會以遞減順序傳回項目 0 到 49 (sort=DESC 為預設值)。
curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&limit=50&offset=0" \
-u email:password
如要取得第二「頁」的結果,請使用 offset 查詢參數,如下所示。請注意,限制和位移量相同。這是因為 0 會計為第一個項目。如果上限為 50,偏移量為 0,則會傳回項目 0 到 49。如果偏移量為 50,系統會傳回第 50 到 99 項商品。
curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&limit=50&offset=50" \
-u email:password