所有 Edge for Private Cloud 客戶都必須提交與 API Proxy 流量相關的 Apigee 統計資料。Apigee 建議客戶透過建立 Cron 工作,每天上傳一次資訊。
您必須提交實際工作環境 API 部署作業的資料,但不得提交用於開發或測試部署作業的 API。在大部分的 Edge 安裝作業中,您可以為實際工作環境 API 定義特定的機構或環境。您提交的資料僅適用於正式環境機構和環境。
Apigee 提供 apigee-analytics-collector
指令列公用程式的 Beta 版,可協助您上傳這項資料。這個公用程式會將 API 呼叫量報表傳回 Apigee。適用於私有雲安裝的每個邊緣都能使用這個公用程式擷取流量資料,並回報給 Apigee。
必要:先聯絡 Apigee 支援團隊再上傳資料
您必須先與 Apigee Edge 支援團隊聯絡,完成新手上路流程,才能將資料上傳至 Apigee。
安裝 apigee-analytics-collector
apigee-analytics-collector
公用程式是您使用 apigee-service
公用程式安裝的 RPM。
安裝位置
您安裝 apigee-analytics-collector
公用程式的節點可以是任何可以在 Edge Management Server 上存取 Edge Management API 的節點。您可以從管理伺服器直接安裝在管理伺服器、在 Edge 安裝的其他節點上,或安裝在個別節點,只要該節點可以向管理伺服器提出 API 要求即可。
網際網路存取權需求
在可連線至外部網際網路的機器上安裝 apigee-analytics-collector
公用程式。接著,apigee-analytics-collector
公用程式就能將資料直接上傳至 Apigee。
如果沒有任何節點同時具備 Edge Management Server 上的 Edge Management API 存取權和外部網際網路存取權,您可以使用 Edge Management API 在本機儲存流量資料。然後,您必須將資料傳輸到可以連上網際網路的機器,才能上傳至 Apigee。在這種情況下,您不需要使用 apigee-analytics-collector
公用程式,詳情請參閱「手動將資料上傳至 Apigee」一文。
安裝
使用下列指令安裝 apigee-analytics-collector
公用程式。由於您要安裝的是 RPM 檔案,這個指令必須由超級使用者或具有完整 sudo 存取權的使用者執行。針對完整的 sudo 存取權,這表示使用者擁有 sudo 存取權,能以根層級執行相同的作業。
/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector install
執行 apigee-analytics-collector
本節說明如何執行 apigee-analytics-collector
公用程式。
設定使用者執行 apigee-analytics-collector
必須以非超級使用者的身分執行 apigee-analytics-collector
。這位使用者必須具備「apigee」使用者的完整 sudo 存取權。
如要設定使用者對「apigee」使用者擁有完整的 sudo 存取權,請使用「visudo」指令來編輯 sudoers 檔案,以新增以下項目:
analyticsUser ALL=(apigee) NOPASSWD: ALL
其中 analyticsUser 是執行 apigee-analytics-collector
公用程式的使用者名稱。
安裝 apigee-analytics-collector
公用程式並設定使用者後,您可以執行 apigee-analytics-collector
公用程式的說明指令來測試公用程式:
/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic --help
執行 apigee-analytics-collector 的必要資訊
您需要以下資訊才能執行 apigee-analytics-collector
指令,並將資料轉送至 Apigee:
apigee_mgmt_api_uri
:管理伺服器上 Edge API 的基準網址。這個網址的格式如下:http://ms_IP:8080/v1
其中 ms_IP 是 IP 位址或管理伺服器,8080 則是 Edge API 使用的通訊埠。如果您已為 Edge API 建立 DNS 項目,網址格式如下:
http://ms_DNS/v1
您在 Edge Management API 中啟用 TLS 後,格式如下:
https://ms_IP:8080/v1 https://ms_DNS/v1
apigee_mgmt_api_email
:可存取 Edge/stats
API 的帳戶電子郵件地址。這通常是 Edge 系統管理員的電子郵件地址,或是實際工作環境機構的機構管理員的電子郵件地址。apigee_mgmt_api_password
:apigee_mgmt_api_email
指定帳戶的 Edge 密碼。apigee_analytics_client_id
和 apigee_analytics_secret:將資料上傳至 Apigee 的憑證。請向 Apigee Edge 支援團隊提交支援單,以取得apigee_analytics_client_id
和apigee_analytics_secret
。
範例指令
以下範例指令說明如何在 Edge 安裝過程中擷取所有機構和環境的流量資料,並將該項資料上傳至 Apigee。請留意您如何使用 apigee-service
執行 apigee-analytics-collector
指令:
/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic \ --apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \ --apigee_mgmt_api_email $ae_username \ --apigee_mgmt_api_password $ae_password \ --apigee_analytics_client_id $apigee_analytics_client_id \ --apigee_analytics_secret $apigee_analytics_secret
請注意,這個指令包含所有必要資訊,例如 apigee_analytics_client_id 和 apigee_analytics_secret。
系統應會以下列格式顯示結果:
[ { "org": "myOrg", "env": "prod", "time_range_start": "08/27/2016 00:00", "time_range_end": "08/30/2016 00:00", "response": [ { "store_org_env_metrics_hourly_v4": 1 } ] }, { "org": "VALIDATE", "env": "test", "time_range_start": "08/27/2016 00:00", "time_range_end": "08/30/2016 00:00", "response": [ { "store_org_env_metrics_hourly_v4": 1 } ] } ]
使用指令列選項控管指令的動作。請使用下列選項,指定要納入產生的資料中的機構和環境:
-i, --include_orgs comma-separated list of items
-x, --exclude_orgs comma-separated list of items
-n, --include_envs comma-separated list of items
-e, --exclude_envs comma-separated list of items
舉例來說,如果只要指定實際工作環境的機構和環境,請使用 -i
(或 --include_orgs
) 和 -n
(或 --include_envs)
選項):
/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic -i myOrg -n prod \ --apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \ --apigee_mgmt_api_email $ae_username \ --apigee_mgmt_api_password $ae_password \ --apigee_analytics_client_id $apigee_analytics_client_id \ --apigee_analytics_secret $apigee_analytics_secret
在本範例中,您只從 myOrg
的實際工作環境收集資料。
如要將資料轉儲到畫面並進行檢查,然後再傳送至 Apigee,請使用 -S
選項:
/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic -i myOrg -n prod -S \ --apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \ --apigee_mgmt_api_email $ae_username \ --apigee_mgmt_api_password $ae_password \ --apigee_analytics_client_id $apigee_analytics_client_id \ --apigee_analytics_secret $apigee_analytics_secret
-S
選項會省略資料上傳至 Apigee 的資料。這樣一來,即使沒有 -S
選項,也能重新執行指令,將資料傳送至 Apigee。
使用 -S
選項的其中一個原因是,您可以在本機顯示不同類型的資料。Apigee 只需要上傳 API 流量資料,但 -D
選項可讓您顯示 API 產品、開發人員、應用程式或 API Proxy 的相關資料。以下範例使用 -D
和 -S
選項,在本機顯示開發人員資料:
/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic -i myOrg -n prod -S -D devs \ --apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \ --apigee_mgmt_api_email $ae_username \ --apigee_mgmt_api_password $ae_password \ --apigee_analytics_client_id $apigee_analytics_client_id \ --apigee_analytics_secret $apigee_analytics_secret
加入 -v
選項即可取得詳細輸出內容,使用 -R
選項則可查看 apigee-analytics-collector
產生的 curl 指令:
/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic -i myOrg -n prod -S -R -v \ --apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \ --apigee_mgmt_api_email $ae_username \ --apigee_mgmt_api_password $ae_password \ --apigee_analytics_client_id $apigee_analytics_client_id \ --apigee_analytics_secret $apigee_analytics_secret
下一節將提供完整的指令列選項清單。
指令參數
下表列出 apigee-analytics-collector
公用程式的完整選項組合:
指令 | 說明 |
---|---|
-h, --help |
輸出使用資訊 |
-D, --dimension dimension |
要收集的流量維度。以下為有效值:
|
-d, --days days
|
過去要收集的資料天數 (從目前日期開始)。預設值為 3。 如果指定 |
-m, --apigee_mgmt_api_uri apigee_mgmt_api_uri |
Edge Management API 的網址。 |
-u, --apigee_mgmt_api_email apigee_mgmt_api_email |
可存取 Edge |
-p, --apigee_mgmt_api_password apigee_mgmt_api_password |
與 |
-i, --include_orgs items
|
要納入輸出內容的機構清單 (以半形逗號分隔), |
-x, --exclude_orgs items
|
要從輸出內容中排除的機構清單 (以半形逗號分隔)。 |
-n, --include_envs items
|
要納入輸出內容的環境清單 (以半形逗號分隔)。 |
-e, --exclude_envs items
|
要納入輸出內容的環境清單 (以半形逗號分隔)。 |
-o, --output path
|
要儲存輸出內容的路徑和檔案名稱。 |
-s, --time_range_start time_range_start
|
查詢流量統計資料的開始時間,格式為:「MM/DD/YYYY HH:MM」。 如果指定 |
-z, --time_range_end time_range_end
|
查詢流量統計資料的時間範圍結束時間,格式為:「04/01/2016 24:00」。 如果指定 |
-t, --time_unit time_unit
|
流量資料的時間單位。預設值為
如果您將 |
-S, --standard_output
|
將輸出內容寫入終端機 (stdout),而不是將其上傳至 Apigee。 |
-c, --apigee_analytics_client_id apigee_analytics_client_id
|
用來將資料上傳至 Apigee 的 ID。請向 Apigee Edge 支援團隊提交支援單,以取得支援。 |
-r, --apigee_analytics_secret apigee_analytics_secret
|
將資料上傳至 Apigee 的密鑰。請向 Apigee Edge 支援團隊提交支援單,以取得支援。 |
-R, --include_curl_commands
|
在輸出內容中加入產生的 |
-v, --verbose
|
顯示詳細輸出。 |
手動將資料上傳至 Apigee
Apigee 建議您在可連線至外部網際網路的機器上安裝 apigee-analytics-collector
公用程式。接著,apigee-analytics-collector
公用程式就能將資料直接上傳至 Apigee。
不過,如果機器無法存取外部網際網路,請使用 Edge Management API 收集流量資料,然後透過 curl
指令,從具備網際網路連線的機器將資料上傳至 Apigee。您必須為 Edge 安裝中的每個實際工作環境機構和環境重複執行這項程序。
使用下列 curl
指令,收集特定機構和環境在指定時間間隔內的流量資料:
curl -X GET -u apigee_mgmt_api_email:apigee_mgmt_api_password \ "http://ms_IP:8080/v1/organizations/org_name/environments/env_name/stats/apiproxy?select=sum(message_count)&timeRange=MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM&timeUnit=hour"
這個指令會使用 Edge Get API 訊息計數 API。在這個指令中:
- apigee_mgmt_api_email:apigee_mgmt_api_password 會指定可存取 Edge /stats API 的帳戶電子郵件地址。
- ms_IP 是邊緣管理伺服器的 IP 位址或 DNS 名稱。
- org_name 和 env_name 會指定機構和環境。
- apiproxy 是依 API Proxy 將指標分組的維度。
MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM&timeUnit=hour
會指定依據要收集指標的時間單位區分的時間範圍。請注意,curl
指令使用十六進位代碼%20
做為時間範圍中的空格。
舉例來說,如要收集 24 小時內每小時的 API Proxy 訊息數量,請使用下列 API 呼叫。
curl -X GET -u apigee_mgmt_api_email:apigee_mgmt_api_password \ "http://192.168.56.103:8080/v1/organizations/myOrg/environments/prod/stats/apiproxy?select=sum(message_count)&timeRange=01%2F01%2F2018%2000%3A00~01%2F02%2F2018%2000%3A00&timeUnit=hour"
(請注意,timeRange
包含網址編碼字元)。
您應該會在以下表單中看到回應:
{ "environments" : [ { "dimensions" : [ { "metrics" : [ { "name" : "sum(message_count)", "values": [ { "timestamp": 1514847600000, "value": "35.0" }, { "timestamp": 1514844000000, "value": "19.0" }, { "timestamp": 1514840400000, "value": "58.0" }, { "timestamp": 1514836800000, "value": "28.0" }, { "timestamp": 1514833200000, "value": "29.0" }, { "timestamp": 1514829600000, "value": "33.0" }, { "timestamp": 1514826000000, "value": "26.0" }, { "timestamp": 1514822400000, "value": "57.0" }, { "timestamp": 1514818800000, "value": "41.0" }, { "timestamp": 1514815200000, "value": "27.0" }, { "timestamp": 1514811600000, "value": "47.0" }, { "timestamp": 1514808000000, "value": "66.0" }, { "timestamp": 1514804400000, "value": "50.0" }, { "timestamp": 1514800800000, "value": "41.0" }, { "timestamp": 1514797200000, "value": "49.0" }, { "timestamp": 1514793600000, "value": "35.0" }, { "timestamp": 1514790000000, "value": "89.0" }, { "timestamp": 1514786400000, "value": "42.0" }, { "timestamp": 1514782800000, "value": "47.0" }, { "timestamp": 1514779200000, "value": "21.0" }, { "timestamp": 1514775600000, "value": "27.0" }, { "timestamp": 1514772000000, "value": "20.0" }, { "timestamp": 1514768400000, "value": "12.0" }, { "timestamp": 1514764800000, "value": "7.0" } ] } ], "name" : "proxy1" } ], "name" : "prod" } ], "metaData" : { "errors" : [ ], "notices" : [ "query served by:53dab80c-e811-4ba6-a3e7-b96f53433baa", "source pg:6b7bab33-e732-405c-a5dd-4782647ce096", "Table used: myorg.prod.agg_api" ] } }
接著,如要將資料從具備網際網路連線的機器上傳至 Apigee,請使用以下 curl
指令:
curl -X POST -H 'Content-Type:application/json' \ -u apigee_analytics_client_id:apigee_analytics_secret \ https://nucleus-api-prod.apigee.com/v1/apigee-analytics-cli-api/traffic/orgs/org_name/apis -d '"environments"...'
在此情況下:
- apigee_analytics_client_id:apigee_analytics_secret 指定憑證,以將資料上傳至您從 Apigee 取得的 Apigee。
- org_name 會指定機構名稱。
- "environments"... 包含您用來收集上述統計資料的
curl
指令結果。