将 API 流量数据上传到 Apigee - Beta 版

适用于私有云的 Edge v4.18.01

所有 Edge for Private Cloud 客户都必须向 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 访问权限来执行相同的操作 以根用户身份执行相应操作。

> /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.
  • 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 <comma-separated list of items>
  • -x、--exclude_orgs <以逗号分隔的项目列表>
  • -n、--include_envs <以逗号分隔的项目列表>
  • -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 代理以下示例使用 -D-S 选项显示开发者数据 locally:

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

要收集的数据的过去天数(从当前日期开始)。默认值为 3。

如果您指定了 -d,请勿同时指定 -s-z 来设置时间范围。

-m、--apigee_mgmt_api_uri &lt;apigee_mgmt_api_uri&gt;

指向 Edge Management API 的网址。

-u、--apigee_mgmt_api_email &lt;apigee_mgmt_api_email&gt;

有权访问 Edge /stats API 的账号的电子邮件地址。这通常是 Edge 系统管理员的电子邮件地址,或生产环境组织的组织管理员的电子邮件地址。

-p, --apigee_mgmt_api_password <apigee_mgmt_api_password>

-u 指定的 Edge Management API 电子邮件账号关联的密码。

-i、--include_orgs &lt;items&gt;

要在输出结果中包含的组织的逗号分隔列表。

-x, --excluded_orgs &lt;items&gt;

要从输出中排除的组织的逗号分隔列表。

-n, --include_envs <items>

要包含在输出中的环境的列表(以英文逗号分隔)。

-e, --excluded_envs &lt;items&gt;

要从输出中包含的环境的逗号分隔列表。

-o, --output <path>

用于保存输出的路径和文件名。

-s、--time_range_start <time_range_start>

用于查询流量统计信息的开始时间范围,格式为“2016 年 3 月 1 日 00:00”。

如果您指定 -d,请勿同时指定 -s 和 -z 来设置时间范围。

-z, --time_range_end <time_range_end>

用于查询流量统计信息的时间范围的结束时间,格式为“2016 年 4 月 1 日 24:00”。

如果您指定 -d,请勿同时指定 -s 和 -z 来设置时间范围。

-t、--time_unit &lt;time_unit&gt;

流量数据的时间单位。默认星期。默认单位为小时。有效时间单位: 秒、分钟、小时、天、周。

-S, --standard_output

将输出写入终端 (stdout),而不是将其上传到 Apigee。

-c、-apigee_analytics_client_id &lt;apigee_analytics_client_id&gt;

用于将数据上传到 Apigee 的 ID。请向 Apigee 支持提交工单, 获取。

-r, --apigee_analytics_secret <apigee_analytics_secret>

用于将数据上传到 Apigee 的 Secret。请向 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 代理对指标进行分组的维度。
  • MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM&timeUnit=hour 用于指定要收集的指标的时间范围(按时间单位划分)。请注意,c网址 命令 对时间范围内的空格使用十六进制代码 %20

例如,如需收集 24 小时内按小时统计的 API 代理消息数,请使用以下管理 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} 用于指定组织。
  • {&quot;environments&quot;...} 包含 c网址 命令的结果, 以及之前用来收集统计信息的数据