当前位置: 首页 > news >正文

AWS CloudFront 可观测最佳实践

AWS CloudFront

AWS CloudFront 是一项全球性的 内容分发网络 (CDN) 服务。它的主要作用是加速网站、应用程序、API 和视频内容的分发,并提高其安全性。简而言之,CloudFront 把你的内容(比如图片、视频、HTML、CSS、JavaScript 文件等)缓存到离用户最近的服务器上,这样用户就能更快地获取内容,从而提升用户体验并降低你的源服务器负载。

观测云

观测云是一个统一实时监测平台,它提供全面的系统可观测性解决方案,帮助用户快速实现对云平台、云原生、应用及业务的监控需求。观测云的核心功能包括:基础设施监测,日志采集和分析,用户访问监测(RUM),应用性能监测(APM),服务可用性监测(拨测),安全检测(SIEM),智能监控等等。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用服务的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

AWS CloudFront 指标采集

  1. 登录观测云控制台
  2. 点击【集成】菜单,选择【云账号管理】
  3. 点击【添加云账号】,选择【AWS】,填写界面所需的信息,如之前已配置过云账号信息,则忽略此步骤
  4. 点击【测试】,测试成功后点击【保存】,如果测试失败,请检查相关配置信息是否正确,并重新测试
  5. 点击【云账号管理】列表上可以看到已添加的云账号,点击相应的云账号,进入详情页
  6. 点击云账号详情页的【集成】按钮,在未安装列表下,找到 AWS CloudFront,点击【安装】按钮,弹出安装界面安装即可

AWS CloudFront 日志采集

1、日志采集方式
  • 可以配置 CloudFront 使其创建日志文件,其中包含有关 CloudFront 接收的每个用户(查看器)请求的详细信息,并存储到 S3 桶。这些日志称为标准日志,也称为访问日志。
  • S3 触发 Event 调用 Lambda 函数,通过 Datait 或者 DataWay 将数据上报到观测云平台。(推荐通过 DataWay 直接上传,本文将主要介绍这种方式)

2、CloudFront 开启日志

1)选择对应的 CloudFront 分配,进入详情页。

2)在【Logging】页中,在【设置】中点击【编辑】。

3)找到 【标准日志目标】部分,点击【Add】,选择 Amazon S3。

4)选择为日志文件创建的 S3 存储桶,选择所需的日志字段(可增加 DistrubtionId、c-country 等字段),同时选择输出格式为 JSON。

5)点击【Submit】保存配置。

3、创建 Lambda 函数

1)打开 Lamba 控制台的函数页面

2)选择创建函数

3)选择从头开始创作

4)输入函数名称

5)设置 运行时 选项为 Python 3.10

6)在 Execution Role(执行角色)中,Lambda 创建执行角色,该角色授予函数上载日志到 Amazon CloudWatchlogs 的权限。在您调用函数时,Lambda 函数担任执行角色,并使用该执行角色为 Amazon 软件开发工具包创建凭证和从事件源读取数据,lambda 权限如下:

  logs: CreateLogGroup logs: CreateLogStream logs: PutLogEvents lambda: * AmazonS3ReadOnlyAccess

7)点击创建函数

8)在 GitHub 中拉取同步代码至下方代码源中将 lambda-forward.py 内容复制到 lambda-function.py 中

9)在将 lambda-function.py 相同目录下新建 setting.pydatakit.pydataway.py 文件,并将 GitHub 中相应文件代码复制进去

10)添加环境变量,以下是必要的配置

  • 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_URLWORKSPACE_TOKEN

11)如果 datakit 端口不是默认的 9529 可添加环境变量 DATAKIT_PORT 填写为正确的端口地址(此变量非必填)

12)点击 Deploy 发布

4、配置 Lambda 触发器
  1. 点击 添加触发器
  2. 设置选择一个源为 S3
  3. 选择需要监听的 bucket
  4. 选择要触发 Lambda 函数的事件 Event types
  5. 同意 我承认不推荐对输入和输出使用相同的 S3 bucket,并且这种配置可能导致递归调用、增加 Lambda 使用和增加成本
  6. 点击添加
5、访问 CloudFront 产生日志

通过 CloudFront 域名访问所关联的资源,CloudFront 将生成的日志上传到 S3,通过 Lambda 函数进行抓取并上报到观测云。在观测云的日志查看器,可以通过 source:cloudfront 来进行搜索。

关键指标说明

所有 CloudFront 分配都包含以下默认指标。除了默认指标外,您还可以启用其他指标,但需要支付额外费用。更多详细的信息可以参考 AWS 的文档:https://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/viewing-cloudfront-metrics.html

指标英文名指标中文名含义
Requests请求数CloudFront 接收到的所有 HTTP 方法以及 HTTP 和 HTTPS 请求的查看器请求总数。
Bytes downloaded下载字节数查看器为 GET、HEAD 和 OPTIONS 请求下载的总字节数。
Bytes uploaded上传字节数查看器使用 POST 和 PUT 请求通过 CloudFront 上传到您的源位置的总字节数。
4xx error rate4xx 错误数响应的 HTTP 状态代码为 4xx 的所有查看器请求的百分比。
5xx error rate5xx 错误数响应的 HTTP 状态代码为 5xx 的所有查看器请求的百分比。
Total error rate总错误数响应的 HTTP 状态代码为 4xx 或 5xx 的所有查看器请求的百分比

日志解析

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 配置问题,需要立即关注。另一方面,可以通过日志,分析每个请求的详细记录,进行快速的故障排除和调试。

http://www.dtcms.com/a/581126.html

相关文章:

  • 化学结构式乱码?InDraw与ChemDraw/Word/WPS兼容性完整指南
  • npm run 的工作原理和工作流程
  • 本地搭建Flinkcdc-mysql-kafka-flink-Doris实时数据集成
  • 极简风网站网站制作周期
  • 【Hadoop】hadoop3.3.1完全分布式配置
  • 如何安装 PDF Reader Pro for Mac v3.2.1.0?超简单DMG安装步骤(附安装包)
  • XML与CSS:构建现代网页的关键技术
  • 无锡品牌学会网站建设wordpress账号注册页面
  • 一次由 PageHelper 分页污染引发的 Bug 排查实录
  • 记录一个IDEA的神奇bug
  • Spark-3.5.7文档3 - Spark SQL、DataFrame 和 Dataset 指南
  • 无需 iTunes,将 iPhone 语音备忘录传输到电脑
  • 三个好思路:SQL并行化处理、混淆矩阵和特征交叉
  • 5 种无需 iTunes 将 iPad 照片传输到电脑的方法
  • 网站制作网站设计自助建站网站程序源码
  • Jenkins 定时触发(cron)使用说明
  • Kubernetes 架构
  • 自己做有趣的网站娱乐网站名字
  • 黑马JAVAWeb-09 文件上传-文件存储到服务器本地磁盘-文件存储在阿里云
  • 医疗小程序04添加就诊人
  • uboot下查看分区
  • 微信小程序camera相机帧转图片base64
  • Agentic AI基础设施实践经验系列(四):MCP服务器从本地到云端的部署演进
  • Linux系统性基础学习笔记
  • DDR5 DFE(Decision Feedback Equalizer)
  • 前程无忧企业官方网站logo制作下载
  • 做网站难学吗wordpress替换百度站内搜索
  • STM32项目分享:基于单片机的空气质量检测系统设计
  • Windows 下PostgreSQL 数据库相关及 n8n .env文件的配置
  • jsp与网站开发期末试题做调查问卷赚钱哪个网站好