所有适用于私有云的 Edge 客户都需要向 Apigee 提交有关 API 代理流量的统计信息。Apigee 建议客户每天上传一次该信息,可以通过创建 Cron 作业来实现。
您必须为生产 API 部署提交数据,但不能为开发或测试部署中的 API 提交数据。在大多数 Edge 安装中,您需要为生产 API 定义特定组织或环境。您提交的数据仅包含这些生产组织和环境。
为了帮助上传此数据,Apigee 提供了 apigee-analytics-collector
命令行工具的 Beta 版。此实用程序将 API 调用量报告发送回 Apigee。安装 Private Cloud 的每个边缘都可以使用此实用程序检索流量数据并将其报告给 Apigee。
必需:在上传数据之前联系 Apigee 支持团队
在将数据上传到 Apigee 之前,您必须联系 Apigee Edge 支持团队以完成初始配置流程。
安装 apigee-analytics-collector
apigee-analytics-collector
实用程序是您使用 apigee-service
实用程序安装的 RPM。
安装位置
安装 apigee-analytics-collector
实用程序的节点可以是任何可以访问边缘管理服务器上的 Edge Management API 的节点。您可以将其直接安装在管理服务器、边缘安装的其他节点上或单独的节点上,只要该节点可以向管理服务器发出 API 请求即可。
互联网访问要求
在具有外部互联网访问权限的机器上安装 apigee-analytics-collector
实用程序。然后,apigee-analytics-collector
实用程序可以直接将数据上传到 Apigee。
如果没有同时可以访问边缘管理服务器上的 Edge Management API 和外部互联网的节点,您可以使用 Edge Management API 在本地保存流量数据。然后,您必须将数据转移到具有互联网访问权限的机器,以便上传到 Apigee。在这种情况下,您无需使用 apigee-analytics-collector
实用程序。如需了解详情,请参阅手动将数据上传到 Apigee。
安装
使用以下命令安装 apigee-analytics-collector
实用程序。因为您要安装 RPM 文件,因此此命令必须由 root 用户或具有完整 sudo 访问权限的用户运行。对于完整的 sudo 访问权限,这意味着用户拥有 sudo 访问权限,可以执行与 root 相同的操作。
/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 代理的数据。以下示例使用 -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 message count API。在此命令中:
- apigee_mgmt_api_email:apigee_mgmt_api_password 指定有权访问 Edge /stats API 的帐号的电子邮件地址。
- ms_IP 是边缘管理服务器的 IP 地址或 DNS 名称。
- org_name 和 env_name 用于指定组织和环境。
- apiproxy 是按 API 代理对指标进行分组的尺寸。
MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM&timeUnit=hour
指定要收集的指标的时间单位(按时间单位划分)。请注意,curl
命令针对时间范围内的空格使用十六进制代码%20
。
例如,如需收集 24 小时内每小时的 API 代理消息计数,请使用以下 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
命令的结果。