You need to enable JavaScript to run this app.
导航
部署 AWS 监控解决方案
最近更新时间:2024.08.15 16:15:54首次发布时间:2022.09.08 14:11:19

本文介绍如何在 AWS 中部署针对 CloudFront 的数据监控方案。部署该方案后,您可以在多云CDN为 AWS 账号启用监控数据同步,然后方可通过多云CDN查询 AWS CloudFront 的监控数据。

背景信息

本文介绍的方案来自 https://awslabs.github.io/aws-cloudfront-extensions。

Amazon CloudFront 高级用户可以使用 CloudFront Extensions 这一解决方案,实现对多个 CloudFront Distributions 的自动化管理,从而提升整体运维效率。该方案包括非实时监控和实时监控两种方式,可以监测 CloudFront Distributions 的各项统计数据,例如流量、缓存命中率、带宽、状态码等。

本文重点介绍 CloudFront Extensions 中的实时监控方案的部署流程。该方案的实现原理如下:

  • 通过 Amazon Athena 查询 CloudFront 日志,从而获取所需的监控指标数据。

注意

请注意,部署该监控方案会在相关的 AWS 服务上产生一定费用,这部分费用需要您自行承担。详细的费用信息,请参见 Cost - Real time monitoring with CloudFront real-time logs

一旦部署完成,您就可以通过以下两种方式查看监控数据:

  • 在 CloudFront Extensions 大盘中直接查看可视化的监控面板。
  • 通过调用特定的 API 接口获取监控数据。

如果您希望在多云CDN控制台中查看 CloudFront 的监控数据,只需要将上述 API 接口的请求地址以及相应的访问凭证提供给多云CDN即可。多云CDN会通过这些 API 接口持续获取 CloudFront 的实时监控数据,最终呈现在控制台中,方便您随时查阅。

操作流程

在 AWS 控制台执行以下操作:

  1. 部署 AWS 监控解决方案
  2. 获取数据访问方式(API endpoint 及 WebConsole URL)
  3. 获取 API key
  4. 为 Distributions 开启实时日志
  5. 验证监控数据是否产生

以上步骤的详细说明如下。

步骤 1:部署 AWS 监控解决方案

使用 AWS CloudFormation 模板来部署 AWS 监控解决方案。

  1. 打开 AWS CloudFormation 控制台

  2. Stacks 页面右上角,单击 Create stack ,然后选择 With new resources(standard)

  3. Create stack 步骤,完成以下参数配置,然后单击 Next

    • Prepare template:选择 Choose an existing template
    • Template source:选择 Amazon S3 URL
    • Amazon S3 URL:填写 https://aws-gcr-solutions.s3.amazonaws.com/Aws-cloudfront-extensions/latest/custom-domain/CloudFrontExtnConsoleStack.template.json

  4. Specify stack details 步骤,完成以下参数配置,然后单击 Next

    • Stack name、Initial User Name、Initial User Email、Initial User Password、Notification Email:由您自定义。其中,Initial User 信息用于后续登录 WebConsole 来访问 CloudFront 监控数据。

    • CloudFront Log Type:选择 yes-Realtime

    • CloudFront Domain List:填写 ALL,表示为所有 Distriubtions 都开启监控。

    • 其他参数:使用默认值或根据需要修改。

  5. Configure stack options 步骤,无需做任何修改,直接单击 Next

  6. Review and create 步骤,选中 Capabilities 区域中的两项,然后单击 Submit

  7. 等待 Stack 创建成功。
    Create stack 请求提交后,系统将自动创建两个 Stack。当 Stack 的状态变成 CREATE_COMPLETE,表示 Stack 创建成功了。

步骤 2:获取数据访问方式(API endpoint 及 WebConsole URL)

  1. Stacks 列表,选中有 NESTED 标识的 Stack,然后单击页面右侧的 Outputs 页签。

  2. 在 Outputs 列表中找到以下两个 Key,记录相应的 Value:

    • CloudfrontPerformanceMetricsEndpoint********:表示 CloudFront 监控数据的 API 请求终端节点(API endpoint)。
    • APIKeyARN:表示 API 请求密钥(API key)在 AWS 平台上对应的资源名称。在后续步骤中,将需要使用该资源名称(ARN)来查询对应的 API key。
  3. Stacks 列表,选中另一个新建的 Stack,然后单击页面右侧的 Outputs 页签。

  4. 在 Outputs 列表中找到以下 Key,记录相应的 Value:

    • WebConsoleCloudFrontURL********:表示 CloudFront 监控数据的 WebConsole 访问地址。登录 WebConsole 所使用的账号密码是您在步骤1中设置的 Initial User Name 和 Initial User Password。

步骤 3:获取 API key

  1. 前往 AWS API Gateway 控制台。
    您可以在顶部导航栏单击搜索图标,输入 api gateway,然后在搜索结果中右键单击 API Gateway,然后单击 Open link in new tab

  2. 在左侧导航栏,单击 API keys

  3. API keys 列表,找到您的 API key,单击 API key 的 Name
    使用您在步骤2记录的 APIKeyARN 与列表中的 ID 进行匹配。ID 与 APIKeyARN 相同的 API key 就是您要找的 API key。

  4. API key details 页面,单击 API key 旁边的 Show

  5. 记录 API key 的值。

步骤 4:为 Distributions 开启实时日志

  1. 前往 Amazon CloudFront 控制台

  2. 在左侧导航栏,选择 Telemetry > Logs

  3. Logs 页面,单击 Real-time configurations 页签。

  4. Real-time configurations 标签页,单击 Create configuration

  5. Create configuration 页面,完成以下参数配置:

    • Name:您可自定义一个配置名称。示例:mcdn-monitoring

    • Sampling rate:设置为 100。

    • Fields:选中以下字段。

      • timestamp
      • c-ip
      • sc-status
      • sc-bytes
      • cs-host
      • cs-uri-stem
      • cs-bytes
      • time-taken
      • x-edge-response-result-type
      • x-edge-result-type
      • x-edge-detailed-result-type
    • Endpoint:从下拉列表中选择以 cloudfront-real-time-log-data-stream 结尾的终端节点。这是一个 Kinesis data stream,在您部署监控解决方案时,系统会创建该 Kinesis data stream。

  6. 单击 Create configuration

Configuration 创建完成后,您需要为该 Configuration 关联 Distributions。

  1. Logs 页面,单击 Real-time configurations 页签。

  2. Configurations 列表,找到刚刚创建的 Configuration,单击它的 Name

  3. Attached distributions 区域,单击 Attach to distribution

  4. Distribution 列表,选择一个需要开启数据监控的 Distribution,然后单击 Attach

  5. 重复前两步操作,直到为所有要开启数据监控的 Distributions 都已添加关联。

    注意

    如果您未关联某个 Distribution,那么多云CDN将无法获取该 Distribution 的监控数据。这种情况下,您在多云CDN控制台的 实时统计 页面,无法查询该 Distribution(在多云CDN中被称为“第三方加速域名”)的统计数据。

关联 Distribution 后,在 Logs 页面单击 Standard 页签。在 Distributions 列表中,您的 Distributions 的 Real-time logs 列的值是 Enabled

步骤 5:验证监控数据是否产生

  • 方式一:通过 WebConsole 查看

    1. 访问在步骤2中获得的 WebConsoleCloudFrontURL,完成登录。
    2. 在左侧导航栏,选择 监控 > CloudFront 流量
    3. Distribution 下拉列表选择一个域名,查询域名监控数据。

  • 方式二:通过 API 请求查看

    • 接口的请求地址是 <CloudfrontPerformanceMetricsEndpoint>/metric。其中,<CloudfrontPerformanceMetricsEndpoint> 需替换为步骤2中记录的值。

    • 在请求中传入以下 header 参数:

      • X-Api-Key:在步骤3中获得的 API key。
    • 在请求中传入以下 query 参数:

      • Domain:要查询的域名。
      • Metric:要查询的指标。
      • StartTimeEndTime:数据产生的时间段(UTC+0)。

    以下是一个接口请求示例。

    curl --location 'https://jdr9bi0aja.execute-api.us-east-2.amazonaws.com/prod/metric?Domain=p15-mcdn-boe3-sg.activity04.com&EndTime=2024-08-08%2014%3A00%3A00&Metric=bandwidth&StartTime=2024-08-08%2000%3A00%3A00' \
    --header 'X-Api-Key: Voal0ZtU2ai2KO********=='
    
    {
        "Response": {
            "Data": [
                {
                    "CdnData": [
                        {
                            "Metric": "bandwidth",
                            "DetailData": [
                                {
                                    "Time": "2024-08-08 05:05:00",
                                    "Value": "3272"
                                },
                                {
                                    "Time": "2024-08-08 05:10:00",
                                    "Value": "4144"
                                },
                                {
                                    "Time": "2024-08-08 05:15:00",
                                    "Value": "4192"
                                },
                                {
                                    "Time": "2024-08-08 05:20:00",
                                    "Value": "4168"
                                },
                                {
                                    "Time": "2024-08-08 05:25:00",
                                    "Value": "4168"
                                },
                                {
                                    "Time": "2024-08-08 05:30:00",
                                    "Value": "4160"
                                }
                            ]
                        }
                    ]
                }
            ],
            "RequestId": "abfcf46b-1398-45b8-89b4-9dca17518e7a",
            "Interval": "5min",
            "Country": "all"
        }
    }
    

后续操作

为 AWS 账号启用监控数据同步

接下来,您可以在多云CDN控制台为您的 AWS 账号开启实时监控。AWS 实时监控开启后,多云CDN便可自动同步您的 AWS 加速域名(Dsitribution)监控数据,供您在 实时统计 页面查询。在多云CDN开启 AWS 实时监控的具体操作,请参见数据同步 - 开启 AWS 实时监控

在多云CDN进行上述操作时,您需要提供以下信息:

  • 接口 HOST:需要填写 <CloudfrontPerformanceMetricsEndpoint>/metric。其中,<CloudfrontPerformanceMetricsEndpoint> 表示步骤2中记录的值。

    示例:https://jdr9bi0aja.execute-api.us-east-2.amazonaws.com/prod/metric

  • 接口 API KEY:在步骤3中获得的 API key。

alt