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

Edge for Private Cloud v4.18.01

所有 Edge for Private Cloud 客户都必须向 Apigee 提交有关 API 代理流量的统计信息。Apigee 建议客户每天上传一次该信息,可以通过创建 cron 作业来实现。

您必须提交生产 API 部署的数据,但不能提交开发或测试部署中的 API 的数据。在大多数 Edge 安装中,您将为生产 API 定义特定的组织或环境。您提交的数据仅适用于这些生产组织和环境。

为了协助上传这些数据,Apigee 提供了 apigee-analytics-collector 命令行实用程序的 Beta 版。此实用程序会将 API 调用量报告发送回 Apigee。每个 Edge for 私有云 安装都可以使用此实用程序检索流量数据并将其报告给 Apigee。

访问由 apigee-analytics-collector 上传的数据

使用 apigee-analytics-collector 实用程序上传数据后,您可以在 Apigee 360 中查看这些数据。

如需查看数据,请登录 Apigee 360,然后选择用量选项。用量页面会显示每个 Edge 组织的用量图表和用量数据表。

安装 apigee-analytics-collector

apigee-analytics-collector 实用程序是一个 RPM,您可以使用 apigee-service 实用程序进行安装。

安装位置

您安装 apigee-analytics-collector 实用程序的节点可以是任何可以访问 Edge 管理服务器上的 Management API 的节点。您可以直接在管理服务器上、在 Edge 安装的其他节点上或在单独的节点上安装它,只要该节点可以向管理服务器发出 API 请求即可。

互联网访问要求

在具有外部互联网访问权限的机器上安装 apigee-analytics-collector 实用程序。然后,apigee-analytics-collector 实用程序可以直接将数据上传到 Apigee。

如果没有任何节点既可以访问 Edge 管理服务器上的 Edge Management API,又可以访问外部互联网,则您可以使用 Edge Management API 将流量数据保存在本地。然后,您必须将数据传输到可访问互联网的机器,以便上传到 Apigee。在这种情况下,您无需使用 apigee-analytics-collector 实用程序。如需了解详情,请参阅下文的手动将数据上传到 Apigee。

安装

使用以下命令安装 apigee-analytics-collector 实用程序。由于您要安装 RPM 文件,因此此命令必须由根用户或具有完整 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 支持团队提交工单,以获取 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 的 prod 环境中收集数据。

如需在将数据发送到 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 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 的 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 message count API。在此命令中:

  • apigee_mgmt_api_email:apigee_mgmt_api_password 指定有权访问 Edge /stats API 的账号的电子邮件地址。
  • <ms_IP> 是 Edge 管理服务器的 IP 地址或 DNS 名称。
  • {org_name} 和 {env_name} 指定组织和环境。
  • apiproxy 是按 API 代理对指标进行分组的维度。
  • MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM&timeUnit=hour 指定要收集的指标的时间范围(按时间单位划分)。请注意,cURL 命令使用十六进制代码 %20 表示时间范围内的空格。

例如,如需在 24 小时内逐小时收集 API 代理消息计数,请使用以下 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 命令的结果。