适用于私有云的 Edge v. 4.17.09
所有适用于私有云的 Edge 客户都必须向 Apigee 提交有关 API 代理流量的统计信息。Apigee 建议客户每天上传一次这些信息,并可能通过创建 Cron 作业来实现。
您必须为生产环境 API 部署提交数据,但无需为处于开发或测试部署阶段的 API 提交数据。在大多数 Edge 安装中,您需要为生产 API 定义特定的组织或环境。您提交的数据仅适用于这些生产组织和环境。
为了帮助您上传此类数据,Apigee 提供了 apigee-analytics-collector 命令行实用程序的 Beta 版。此实用程序会将 API 调用量报告发送回 Apigee。用于安装私有云的每个 Edge 均可使用此实用程序检索流量数据,并将其报告给 Apigee。
访问 apigee-analytics-collector 上传的数据
使用 apigee-analytics-collector 实用程序上传数据后,您可以在 Apigee 360 中查看这些数据。
如需查看数据,请登录 Apigee 360,然后选择使用情况选项。使用情况页面会显示您的每个 Edge 组织的使用情况图表和使用情况数据表格。
安装 apigee-analytics-collector
apigee-analytics-collector 实用程序是您使用 apigee-service 实用程序安装的 RPM。
安装位置
安装 apigee-analytics-collector 实用程序的节点可以是任何可以访问边缘管理服务器上 Edge Management API 的节点。您可以直接在管理服务器、Edge 安装的其他节点或单独的节点上安装该代理,只要该节点可以向管理服务器发出 API 请求即可。
互联网访问要求
在具有外部互联网访问权限的机器上安装 apigee-analytics-collector 实用程序。然后,apigee-analytics-collector 实用程序可以将数据直接上传到 Apigee。
如果没有同时具有对 Edge 管理服务器上的 Edge 管理 API 的访问权限和对外部互联网的访问权限的节点,则您可以使用 Edge 管理 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 管理 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 支持团队提交工单,以获取 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 <以逗号分隔的项目列表>
- -x, --exclude_orgs <items separated by commas>
- -n, --include_envs <items separated by commas>
- -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 代理的数据。以下示例使用 -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> |
要收集的流量维度。有效维度:apiproducts、devs、apps、apiproxy(默认) |
-d、--days <days> |
要收集的数据过去的天数(从当前日期开始)。默认值为 3。 如果您指定 -d,请勿同时指定 -s 和 -z 来设置时间范围。 |
-m, --apigee_mgmt_api_uri <apigee_mgmt_api_uri> |
Edge 管理 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> |
用于查询流量统计信息的时间范围的结束时间,格式为“2016 年 4 月 1 日 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 的 Secret。请向 Apigee 支持提交工单以获取。 |
-R、--include_curl_commands |
在输出中添加生成的 c网址 命令以进行调试。 |
-v、--verbose |
显示详细输出。 |
手动将数据上传到 Apigee
Apigee 建议您在可以访问外部互联网的机器上安装 apigee-analytics-collector 实用程序。然后,apigee-analytics-collector 实用程序可以将数据直接上传到 Apigee。
不过,如果机器没有外部互联网访问权限,请使用 Edge 管理 API 收集流量数据,然后使用 c网址 命令从有互联网访问权限的机器将其上传到 Apigee。您必须针对 Edge 安装中的每个生产组织和环境重复此流程。
使用以下 c网址 命令,可收集指定组织和环境在指定时间间隔内的流量数据:
curl -X GET -u apigee_mgmt_api_email:apigee_mgmt_api_password \ "http://<ms_IP>:8080/v1/organizations/{org_name}/environments/{env_name}/stats/?select=sum(message_count)&timeRange=MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM"
此命令使用 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} 指定组织和环境。
- MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM 指定要收集的统计数据的时间范围。请注意,c网址 命令使用十六进制代码 %20 表示时间范围中的空格。
例如,如需收集 24 小时内的统计信息,请使用以下命令:
curl -X GET -u apigee_mgmt_api_email:apigee_mgmt_api_password \ "http://192.168.56.103:8080/v1/organizations/myOrg/environments/prod/stats/?select=sum(message_count)&timeRange=08/29/2016%2000:00~08/30/2016%2000:00"
您应该会在表单中看到响应:
{ "environments" : [ { "metrics" : [ { "name" : "sum(message_count)", "values" : [ "42.0" ] } ], "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,请使用以下 c网址 命令:
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"...} 包含您在上文中用于收集统计信息的 c网址 命令的结果。