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

所有适用于私有云的 Edge 客户都必须向 Apigee 提交有关 API 的统计信息 代理流量Apigee 建议客户每天上传一次这些信息,可能的途径 创建 Cron 作业

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

为帮助上传这些数据,Apigee 提供了 Beta 版 apigee-analytics-collector 命令行 实用程序。该实用程序将 API 调用量报告发送回 Apigee。全面覆盖 安装私有云后,可以使用此实用程序检索流量数据,并将其报告给 Apigee。

需采取的措施:在上传数据前与 Apigee 支持团队联系

在将数据上传到 Apigee 之前,您必须联系 Apigee 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 Management API 以及如何访问外部互联网,则可以使用 Edge Management 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:您的 Management 上 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
  • apigee_analytics_client_idapigee_analytics_secret: 用于将数据上传到 Apigee 的凭据。请向 Apigee Edge 支持提交工单,以获取 apigee_analytics_client_idapigee_analytics_secret

示例指令

下面所示的示例命令可检索所有组织和 并将数据上传到 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 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

要收集的流量维度。有效值包括:

  • apiproducts
  • apiproxy(默认)
  • apps
  • devs
-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

与以下对象指定的 Edge Management API 电子邮件账号相关联的密码: -u

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

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

-z, --time_range_end time_range_end

查询流量统计信息的时间范围结束时间,格式为“04/01/2016 24:00”。

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

-t, --time_unit time_unit

路况数据的时间单位。默认值为 hour。有效时间单位 分别是:

  • second
  • minute
  • hour(默认)
  • day
  • week

如果您将 -t 设置为 week,并将 -d 设置为 365,那么 Apigee 会返回大量数据,这些数据会分成 52 个单独的 条目(每周一个)。

-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

在输出中包含生成的 curl 命令以进行调试。

-v, --verbose

显示详细输出。

手动将数据上传到 Apigee

Apigee 建议您将 apigee-analytics-collector 实用程序安装到 一台具有外部互联网访问权限的机器然后,使用 apigee-analytics-collector 实用程序 可将数据直接上传至 Apigee

但是,如果机器没有外部互联网访问权限,请使用 Edge Management API 来 收集流量数据,然后使用 curl 命令将其上传到 Apigee 机器 访问互联网。您必须对每个生产组织重复此过程, 环境。

使用以下 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_nameenv_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 命令的结果, 以及之前用来收集统计数据的第二步