AWS CloudFront¶
采集 AWS CloudFront 指标、日志数据
配置¶
AWS CloudFront 的核心性能指标包括请求总数、数据传输量、HTTP 错误率、缓存命中率和延迟,这些可以帮助用户评估和优化内容分发网络的性能。
安装 Func¶
推荐开通 观测云集成 - 扩展 - 托管版 Func: 一切前置条件都自动安装好, 请继续脚本安装
如果自行部署 Func 参考自行部署 Func
安装脚本¶
提示:请提前准备好符合要求的亚马逊 AK(简单起见,可直接授予全局只读权限
ReadOnlyAccess)
托管版开通脚本¶
- 登陆观测云控制台
- 点击【集成】菜单,选择【云帐号管理】
- 点击【添加云帐号】,选择【AWS】,填写界面所需的信息,如之前已配置过云帐号信息,则忽略此步骤
- 点击【测试】,测试成功后点击【保存】,如果测试失败,请检查相关配置信息是否正确,并重新测试
- 点击【云帐号管理】列表上可以看到已添加的云账号,点击相应的云帐号,进入详情页
- 点击云帐号详情页的【集成】按钮,在
未安装列表下,找到AWS CloudFront,点击【安装】按钮,弹出安装界面安装即可。
手动开通脚本¶
-
登陆Func 控制台,点击【脚本市场】,进入观测云脚本市场,搜索:
integration_aws_cloudfront -
点击【安装】后,输入相应的参数:AWS AK ID 、AK Secret 及账户名。
-
点击【部署启动脚本】,系统会自动创建
Startup脚本集,并自动配置相应的启动脚本。 -
开启后可以在「管理 / 自动触发配置」里看到对应的自动触发配置。点击【执行】,即可立即执行一次,无需等待定期时间。稍等片刻,可以查看执行任务记录以及对应日志。
验证¶
- 在「管理 / 自动触发配置」确认对应的任务是否已存在对应的自动触发配置,同时可以查看对应任务记录及日志检查是否有异常
- 在观测云,「基础设施 / 自定义」中查看是否存在资产信息
- 在观测云,「指标」查看是否有对应监控数据
指标¶
配置好亚马逊-云监控,默认的指标集如下, 可以通过配置的方式采集更多的指标 亚马逊云监控指标详情
监控指标¶
| 指标英文名 | 指标中文名 | 含义 |
|---|---|---|
| Requests | 请求书 | CloudFront接收到的所有HTTP方法以及HTTP和HTTPS请求的查看器请求总数。 |
| Bytes downloaded | 下载字节数 | 查看器为GET、HEAD和OPTIONS请求下载的总字节数。 |
| Bytes uploaded | 上传字节数 | 查看器使用POST和PUT请求通过CloudFront上传到您的源位置的总字节数。 |
| 4xx error rate | 4xx 错误数 | 响应的HTTP状态代码为4xx的所有查看器请求的百分比。 |
| 5xx error rate | 5xx 错误数 | 响应的HTTP状态代码为5xx的所有查看器请求的百分比。 |
| Total error rate | 总错误数 | 响应的HTTP状态代码为4xx或5xx的所有查看器请求的百分比。 |
Logging¶
CloudFront¶
日志采集方式¶
- 可以配置 CloudFront 使其创建日志文件,其中包含有关 CloudFront 接收的每个用户(查看器)请求的详细信息,并存储到 S3 桶。这些日志称为标准日志,也称为访问日志。
- S3 触发 Event 调用 Lambda 函数,通过 DataKit 或者 DataWay 将数据上报到平台(推荐通过 DataWay 直接上传)
CloudFront 日志写入 S3 存储桶¶
- 选择对应的
CloudFront分配,进入详情页 - 在【Logging】页中,在【设置】中点击【编辑】
- 选择【标准日志目标】部分,点击【Add】,选择
Amazon S3。 - 选择为日志文件创建的 S3 存储桶,选择所需的日志字段(可增加
DistrubtionId、c-country等字段),同时选择输出格式为JSON。 - 点击【Submit】保存配置。
Lambda 配置¶
日志解析¶
观测云 已内置了 CloudFront 日志解析,可以在【日志】 - 【Pipelines】 - 【Pipeline 官方库】 - 选择 CloudFront ,添加类型为 中心 Pipeline,保存即可,对新上报数据生效。
对象¶
上报的数据示例如下:
{
"measurement": "aws_cloudfront",
"tags": {
"ARN": "arn:aws-cn:cloudfront::F",
"DomainName": "d3q33pv83.cloudfront.cn",
"Id": "E183FMUG1QDCZF",
"Status": "Deployed",
"name": "E183FMUG1ZF"
},
"fields": {
"CreatedDate" : "2022-03-09T06:13:31Z",
"ApiKeySelectionExpression": "$request.header.",
"DisableSchemaValidation" : "xxxxx",
"Description" : "Created by AWS Lambda"
}
}
注意:
tags、fields中的字段可能会随后续更新有所变动