本文介绍如何在 AWS 中部署针对 CloudFront 的数据监控方案。部署该方案后,您可以在多云CDN为 AWS 账号启用监控数据同步,然后方可通过多云CDN查询 AWS CloudFront 的监控数据。
本文介绍的方案来自 https://awslabs.github.io/aws-cloudfront-extensions。
Amazon CloudFront 高级用户可以使用 CloudFront Extensions 这一解决方案,实现对多个 CloudFront Distributions 的自动化管理,从而提升整体运维效率。该方案包括非实时监控和实时监控两种方式,可以监测 CloudFront Distributions 的各项统计数据,例如流量、缓存命中率、带宽、状态码等。
本文重点介绍 CloudFront Extensions 中的实时监控方案的部署流程。该方案的实现原理如下:
注意
请注意,部署该监控方案会在相关的 AWS 服务上产生一定费用,这部分费用需要您自行承担。详细的费用信息,请参见 Cost - Real time monitoring with CloudFront real-time logs。
一旦部署完成,您就可以通过以下两种方式查看监控数据:
如果您希望在多云CDN控制台中查看 CloudFront 的监控数据,只需要将上述 API 接口的请求地址以及相应的访问凭证提供给多云CDN即可。多云CDN会通过这些 API 接口持续获取 CloudFront 的实时监控数据,最终呈现在控制台中,方便您随时查阅。
在 AWS 控制台执行以下操作:
以上步骤的详细说明如下。
使用 AWS CloudFormation 模板来部署 AWS 监控解决方案。
在 Stacks 页面右上角,单击 Create stack ,然后选择 With new resources(standard)。
在 Create stack 步骤,完成以下参数配置,然后单击 Next。
https://aws-gcr-solutions.s3.amazonaws.com/Aws-cloudfront-extensions/latest/custom-domain/CloudFrontExtnConsoleStack.template.json
。在 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 都开启监控。
其他参数:使用默认值或根据需要修改。
在 Configure stack options 步骤,无需做任何修改,直接单击 Next。
在 Review and create 步骤,选中 Capabilities 区域中的两项,然后单击 Submit
等待 Stack 创建成功。
Create stack 请求提交后,系统将自动创建两个 Stack。当 Stack 的状态变成 CREATE_COMPLETE,表示 Stack 创建成功了。
在 Stacks 列表,选中有 NESTED 标识的 Stack,然后单击页面右侧的 Outputs 页签。
在 Outputs 列表中找到以下两个 Key,记录相应的 Value:
在 Stacks 列表,选中另一个新建的 Stack,然后单击页面右侧的 Outputs 页签。
在 Outputs 列表中找到以下 Key,记录相应的 Value:
前往 AWS API Gateway 控制台。
您可以在顶部导航栏单击搜索图标,输入 api gateway
,然后在搜索结果中右键单击 API Gateway,然后单击 Open link in new tab。
在左侧导航栏,单击 API keys。
在 API keys 列表,找到您的 API key,单击 API key 的 Name。
使用您在步骤2记录的 APIKeyARN 与列表中的 ID 进行匹配。ID 与 APIKeyARN 相同的 API key 就是您要找的 API key。
在 API key details 页面,单击 API key 旁边的 Show。
记录 API key 的值。
在左侧导航栏,选择 Telemetry > Logs。
在 Logs 页面,单击 Real-time configurations 页签。
在 Real-time configurations 标签页,单击 Create configuration。
在 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。
单击 Create configuration。
Configuration 创建完成后,您需要为该 Configuration 关联 Distributions。
在 Logs 页面,单击 Real-time configurations 页签。
在 Configurations 列表,找到刚刚创建的 Configuration,单击它的 Name。
在 Attached distributions 区域,单击 Attach to distribution。
在 Distribution 列表,选择一个需要开启数据监控的 Distribution,然后单击 Attach。
重复前两步操作,直到为所有要开启数据监控的 Distributions 都已添加关联。
注意
如果您未关联某个 Distribution,那么多云CDN将无法获取该 Distribution 的监控数据。这种情况下,您在多云CDN控制台的 实时统计 页面,无法查询该 Distribution(在多云CDN中被称为“第三方加速域名”)的统计数据。
关联 Distribution 后,在 Logs 页面单击 Standard 页签。在 Distributions 列表中,您的 Distributions 的 Real-time logs 列的值是 Enabled。
方式一:通过 WebConsole 查看
方式二:通过 API 请求查看
接口的请求地址是 <CloudfrontPerformanceMetricsEndpoint>/metric
。其中,<CloudfrontPerformanceMetricsEndpoint>
需替换为步骤2中记录的值。
在请求中传入以下 header 参数:
X-Api-Key
:在步骤3中获得的 API key。在请求中传入以下 query 参数:
Domain
:要查询的域名。Metric
:要查询的指标。StartTime
和 EndTime
:数据产生的时间段(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" } }
接下来,您可以在多云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。