AWS CloudFront 可观测最佳实践

AWS CloudFront
AWS CloudFront 是一项全球性的 内容分发网络 (CDN) 服务。它的主要作用是加速网站、应用程序、API 和视频内容的分发,并提高其安全性。简而言之,CloudFront 把你的内容(比如图片、视频、HTML、CSS、JavaScript 文件等)缓存到离用户最近的服务器上,这样用户就能更快地获取内容,从而提升用户体验并降低你的源服务器负载。
观测云
观测云是一个统一实时监测平台,它提供全面的系统可观测性解决方案,帮助用户快速实现对云平台、云原生、应用及业务的监控需求。观测云的核心功能包括:基础设施监测,日志采集和分析,用户访问监测(RUM),应用性能监测(APM),服务可用性监测(拨测),安全检测(SIEM),智能监控等等。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用服务的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。
AWS CloudFront 指标采集
登录观测云控制台
点击【集成】菜单,选择【云账号管理】
点击【添加云账号】,选择【AWS】,填写界面所需的信息,如之前已配置过云账号信息,则忽略此步骤
点击【测试】,测试成功后点击【保存】,如果测试失败,请检查相关配置信息是否正确,并重新测试
点击【云账号管理】列表上可以看到已添加的云账号,点击相应的云账号,进入详情页
点击云账号详情页的【集成】按钮,在未安装列表下,找到
AWS CloudFront,点击【安装】按钮,弹出安装界面安装即可
AWS CloudFront 日志采集
1、日志采集方式
可以配置 CloudFront 使其创建日志文件,其中包含有关 CloudFront 接收的每个用户(查看器)请求的详细信息,并存储到 S3 桶。这些日志称为标准日志,也称为访问日志。
S3 触发 Event 调用 Lambda 函数,通过 Datait 或者 DataWay 将数据上报到观测云平台。(推荐通过 DataWay 直接上传,本文将主要介绍这种方式)
2、CloudFront 开启日志
选择对应的 CloudFront 分配,进入详情页。
在【Logging】页中,在【设置】中点击【编辑】。
找到 【标准日志目标】部分,点击【Add】,选择 Amazon S3。
选择为日志文件创建的 S3 存储桶,选择所需的日志字段(可增加 DistrubtionId、c-country 等字段),同时选择输出格式为 JSON。
点击【Submit】保存配置。
3、创建 Lambda 函数
打开 Lamba 控制台的函数页面
选择创建函数
选择从头开始创作
输入函数名称
设置
运行时选项为Python 3.10在 Execution Role(执行角色)中,Lambda 创建执行角色,该角色授予函数上载日志到 Amazon CloudWatchlogs 的权限。在您调用函数时,Lambda 函数担任执行角色,并使用该执行角色为 Amazon 软件开发工具包创建凭证和从事件源读取数据,lambda 权限如下:
点击创建函数
在 GitHub 中拉取同步代码至下方代码源中将
lambda-forward.py内容复制到lambda-function.py中在将
lambda-function.py相同目录下新建setting.py、datakit.py、dataway.py文件,并将 GitHub 中相应文件代码复制进去添加环境变量,以下是必要的配置
DATAKIT_IP: datakit 部署的 ip 地址,上报数据源为 datakit
DATAKIT_PORT: datakit 服务端口,上报数据源为 datakit
DATAWAY_URL: dataway URL (Eg: https://xx-openway.xxx.com) 上报数据源为 dataway
WORKSPACE_TOKEN: 工作空间
Token,上报数据源为 dataway
注意:上报数据源 datakit 与 dataway 必选一个,选择 datakit 请配置 DATAKIT_IP, 选择 dataway 请配置 DATAWAY_URL、WORKSPACE_TOKEN
如果 datakit 端口不是默认的 9529 可添加环境变量 DATAKIT_PORT 填写为正确的端口地址(此变量非必填)
点击
Deploy发布
4、配置 Lambda 触发器
点击
添加触发器设置
选择一个源为S3选择需要监听的
bucket选择要触发 Lambda 函数的事件 Event types
同意 我承认不推荐对输入和输出使用相同的 S3 bucket,并且这种配置可能导致递归调用、增加 Lambda 使用和增加成本
点击添加
5、访问 CloudFront 产生日志
通过 CloudFront 域名访问所关联的资源,CloudFront 将生成的日志上传到 S3,通过 Lambda 函数进行抓取并上报到观测云。在观测云的日志查看器,可以通过 source:cloudfront 来进行搜索。
关键指标说明
所有 CloudFront 分配都包含以下默认指标。除了默认指标外,您还可以启用其他指标,但需要支付额外费用。更多详细的信息可以参考 AWS 的文档:https://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/viewing-cloudfront-metrics.html
日志解析
CloudFront 标准日志中,每个实时日志记录中包含的字段列表可以在 AWS 控制台进行配置。每个日志记录最多可包含 40 个字段,您可以选择接收所有可用字段,也可以选择仅接收监控和分析性能所需的字段。详细的字段信息描述,可以参考 AWS 的文档:https://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html
观测云 已内置了 CloudFront 日志解析,可以在【日志】 - 【Pipelines】 - 【Pipeline 官方库】 - 选择 CloudFront ,添加类型为 中心 Pipeline,保存即可,对新上报数据生效。
日志解析之后,可在查看器中查看扩展字段,并可以根据这些字段快速搜索,或聚类分析。
场景视图
登录观测云控制台,点击【场景】->【新建仪表板】,输入 “CloudFront”, 选择 “AWS CloudFront 监控视图”,点击 “确定” 即可添加视图。
监控器
针对 CloudFront,设置 4xx 和 5xx 错误率的告警,在出现问题的时候及时解决。可根据您的应用类型和业务关键性来调整告警的阈值,例如静态网站通常对错误更敏感,而某些动态应用可能会有少量预期错误。
告警触发之后,可在观测云的【事件中心】进行查看和分析。
总结
通过观测云,监控 CloudFront 的指标和日志对于确保您的内容分发网络 (CDN) 的性能和可用性至关重要。通过设置监控器,监控 4xx 错误(客户端错误,如文件未找到)和 5xx 错误(服务器错误,如源站宕机或配置错误),可以帮助您关注直接影响用户体验的错误,5xx 错误更是指示着严重的后端或 CloudFront 配置问题,需要立即关注。另一方面,可以通过日志,分析每个请求的详细记录,进行快速的故障排除和调试。







评论