將 API 流量資料上傳至 Apigee - Beta 版

私有雲 v4.18.01 的邊緣

所有 Edge for Private Cloud 客戶都必須提交與 API Proxy 流量相關的 Apigee 統計資料。Apigee 建議客戶透過建立 Cron 工作,每天上傳一次資訊。

您必須提交實際工作環境 API 部署作業的資料,但不得提交用於開發或測試部署作業的 API。在大部分的 Edge 安裝作業中,您可以為實際工作環境 API 定義特定的機構或環境。您提交的資料僅適用於正式環境機構和環境。

為協助您上傳這類資料,Apigee 提供了 apigee-analytics-collector 指令列公用程式的 Beta 版。這個公用程式會將 API 呼叫量報表傳回 Apigee。適用於私有雲安裝的每個邊緣都能使用這個公用程式擷取流量資料,並回報給 Apigee。

存取 apigee-analytics-collector 上傳的資料

使用 apigee-analytics-collector 公用程式上傳資料後,即可在 Apigee 360 中查看資料。

如要查看資料,請登入 Apigee 360,然後選取「用量」選項。「用量」頁面會顯示用量圖表,以及各個邊緣機構的使用資料表格。

安裝 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_passwordapigee_mgmt_api_email 指定帳戶的 Edge 密碼。
  • apigee_analytics_client_idapigee_analytics_secret:將資料上傳至 Apigee 的憑證。請向 Apigee 支援團隊提交支援單,取得 apigee_analytics_client_idapigee_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_idapigee_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 <逗號分隔項目清單>
  • -x, --Exclude_orgs <逗號分隔項目清單>
  • -n, --include_envs <逗號分隔項目清單>
  • -e, --Exclude_envs <逗號分隔項目清單>

舉例來說,如果只要指定實際工作環境的機構和環境,請使用 -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>

要收集的流量維度。有效維度:apiproductsdevsappsapiproxy (預設)

-d、--天 <days>

過去要收集資料的天數 (從目前日期起算)。預設值為 3。

如果您指定 -d,請不要同時指定 -s-z 來設定時間範圍。

-m, --apigee_mgmt_api_uri <apigee_mgmt_api_uri>

Edge Management API 的網址。

-u, --apigee_mgmt_api_email <apigee_mgmt_api_email>

可存取 Edge /stats API 的帳戶電子郵件地址。這通常是 Edge 系統管理員的電子郵件地址,或是實際工作環境機構的機構管理員的電子郵件地址。

-p, --apigee_mgmt_api_password <apigee_mgmt_api_password>

-u 指定的 Edge Management API 電子郵件帳戶相關聯的密碼。

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

查詢流量統計資料的起始時間範圍,格式為:「03/01/2016 00:00」。

如果您指定 -d,請不要同時指定 -s 和 -z 來設定時間範圍。

-z、--time_range_end <time_range_end>

查詢流量統計資料的時間範圍結束時間,格式為:「04/01/2016 24:00」。

如果您指定 -d,請不要同時指定 -s 和 -z 來設定時間範圍。

-t、--time_unit <time_unit>

流量資料的時間單位。預設週。預設單位為小時。有效時間單位:秒、分鐘、小時、天、週。

-S、--standard_output

將輸出內容寫入終端機 (stdout),而不是將其上傳至 Apigee。

-c、--apigee_analytics_client_id <apigee_analytics_client_id>

用來將資料上傳至 Apigee 的 ID。請向 Apigee 支援團隊提交票證以取得要求。

-r, --apigee_analytics_secret <apigee_analytics_secret>

將資料上傳至 Apigee 的密鑰。請向 Apigee 支援團隊提交票證以取得要求。

-R、--include_curl_commands

在輸出內容中加入產生的 cURL 指令以便偵錯。

-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 訊息計數,請使用下列 Management API 呼叫。timeRange 包含網址編碼字元。

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"

您應該會在以下表單中看到回應:

{
  "environments" : [ {
    "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"
  } ],
  "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 指令結果。