跳转至

Amazon CloudFront 日志

CloudFront 标准日志 为每个发送到分发的请求提供详细的记录。

您可以使用日志通控制台或通过部署独立的 CloudFormation 堆栈来将日志摄取到 Amazon OpenSearch Service 中。

Important

  • CloudFront 日志存储桶必须与日志通位于同一区域。
  • 默认情况下,该解决方案将每天轮换索引。您可以在额外设置中进行调整。

创建日志摄取(OpenSearch Engine)

使用日志通控制台

  1. 登录日志通控制台。
  2. 在导航窗格中的 日志分析管道 下,选择 AWS 服务日志
  3. 选择创建日志摄取按钮。
  4. AWS 服务 部分,选择 Amazon CloudFront
  5. 选择Amazon OpenSearch,选择下一步
  6. 指定设置 下,为 CloudFront 日志启用选择 自动手动。自动模式将自动检测 CloudFront 日志位置。
    • 对于自动模式,从下拉列表中选择 CloudFront 分配。
    • 对于 手动模式,输入 CloudFront Distribution IDCloudFront 标准日志位置
    • (可选步骤)如果需要跨账户摄取日志,需要先在 账户 的下拉列表中选择一个链接的 AWS 账户
  7. 选择下一步
  8. 指定 OpenSearch 域 部分,为 Amazon OpenSearch 域 选择一个导入的域。
  9. 如果您要摄取关联的模板化 Amazon OpenSearch Service 仪表板,请为 示例仪表板 选择
  10. 如果需要,您可以更改目标 Amazon OpenSearch Service 索引的 索引前缀。默认前缀是 CloudFront 分配 ID。
  11. 日志生命周期 部分,输入管理 Amazon OpenSearch Service 索引生命周期的天数。日志通 将为此管道自动创建关联的 索引状态管理 (ISM) 策略。
  12. 日志处理器设置 中,选择 日志处理器类型,并根据需要配置 Lambda 并发数,然后 下一步
  13. 如果需要,添加标签。
  14. 选择创建

使用 CloudFormation 堆栈

此自动化 AWS CloudFormation 模板在 AWS 云中部署 日志通- CloudFront 标准日志摄取 解决方案。

在 AWS 控制台中启动 下载模板
AWS 海外区域 启动堆栈 模板
AWS 中国区域 启动堆栈 模板
  1. 登录 AWS 管理控制台并选择以上按钮以启动 AWS CloudFormation 模板。您还可以下载模板开始部署。

  2. 要在不同的 AWS 区域中启动堆栈,请使用控制台导航栏中的区域选择器。

  3. 创建堆栈 页面上,验证正确的模板 URL 显示在 Amazon S3 URL 文本框中,然后选择 下一步

  4. 指定堆栈详细信息 页面上,为您的解决方案堆栈分配一个名称。

  5. 参数 下,查看模板的参数并根据需要进行修改。

参数 默认 描述
Log Bucket Name <需要输入> 存储日志的 S3 存储桶名称。
Log Bucket Prefix <需要输入> 存储日志的 S3 存储桶路径前缀。
Log Source Account ID <可选输入> 存储日志的 S3 存储桶所在账户 ID. 对于跨账户日志摄取是必填 (需要先 添加一个成员账户). 默认情况下, 会使用您在 步骤 1 中登录的账户 ID。
Log Source Region <可选输入> 存储日志的 S3 存储桶所在的区域. 默认情况下, 会使用您在 步骤 2 中指定的区域。
Log Source Account Assume Role <可选输入> 跨账户日志摄取所需要使用的 IAM Role. 对于跨账户日志摄取是必填 (需要先 添加一个成员账户)。
KMS-CMK ARN <可选输入> 用于加密的 KMS-CMK ARN. 留空以创建新的 KMS CMK.
Enable OpenSearch Ingestion as processor <可选输入> Ingestion 表 Arn。如果不使用 OSI 作为处理器,请留空。
S3 Backup Bucket <需要输入> 用于存储失败提取日志的 S3 备份存储桶名称。
Engine Type OpenSearch OpenSearch 的引擎类型。选择 OpenSearch 或 Elasticsearch。
OpenSearch Domain Name <需要输入> Amazon OpenSearch 集群的域名。
OpenSearch Endpoint <需要输入> OpenSearch 端点 URL。例如,vpc-your_opensearch_domain_name-xcvgw6uu2o6zafsiefxubwuohe.us-east-1.es.amazonaws.com
Index Prefix <需要输入> 日志的 OpenSearch 索引的公共前缀。索引名称将为 <Index Prefix>-<Log Type>-<Other Suffix>
Create Sample Dashboard Yes 是否创建示例 OpenSearch 仪表板。
VPC ID <需要输入> 选择可以访问 OpenSearch 域的 VPC。日志处理 Lambda 将驻留在选定的 VPC 中。
Subnet IDs <需要输入> 选择至少两个可以访问 OpenSearch 域的子网。日志处理 Lambda 将驻留在子网中。确保子网可以访问 Amazon S3 服务。
Security Group ID <需要输入> 选择将与日志处理 Lambda 关联的安全组。确保安全组有权访问 OpenSearch 域。
Number Of Shards 5 将索引均匀分布在所有数据节点上的分片数。将每个分片的大小保持在 10-50 GiB 之间。
Number of Replicas 1 OpenSearch 索引的副本数。每个副本都是索引的完整副本。 如果 OpenSearch 选项设置为 带备用的域,你需要将其配置为 2。
Age to Warm Storage <可选输入> 将索引移至温存储所需的时间(例如 7d)。索引时间是从创建到现在之间的时间。支持的单位是 d(天)和 h(小时)。仅当 OpenSearch 中启用了温存储时才生效。
Age to Cold Storage <可选输入> 将索引移入冷存储所需的时间(例如 30d)。索引时间是从创建到现在之间的时间。支持的单位是 d(天)和 h(小时)。仅当 OpenSearch 中启用了冷存储时才生效。
Age to Retain <可选输入> 保留索引的时间(例如 180d)。索引时间是从创建到现在之间的时间。支持的单位是 d(天)和 h(小时)。如果值为空,则不会删除该索引。
Rollover Index Size <可选输入> 索引滚动所需的分片大小(例如 30GB)。
Index Suffix yyyy-MM-dd 索引后缀格式(例如:yyyy-MM-dd、yyyy-MM-dd-HH)。索引名称将为 <Index Prefix>-<Log Type>-<Index Suffix>-000001
Compression type best_compression 用于压缩存储数据的压缩类型。 可用值为 best_compression 和 default。
Refresh Interval 1s 索引多久刷新,即刷新索引最近的更改数据并使它们可用于搜索。 可以设置为 -1 以禁用刷新。 默认为 1 秒。
Plugins <可选输入> 用逗号分隔的插件列表,如果无需使用插件,请留空。 合法输入为 user_agentgeo_ip
EnableS3Notification True 一个二进制选项,用于启用或禁用针对 Amazon S3 存储桶的通知。大多数情况下,建议使用默认选项。
LogProcessorRoleName <可选> 为日志处理器指定一个角色名称。该名称不能与现有角色名称重复。如果没有指定名称,将生成一个随机名称。可选参数,不是必填项。
QueueName <可选> 为 SQS 指定一个队列名称。该名称不能与现有角色名称重复。如果没有指定名称,将生成一个随机名称。可选参数,不是必填项。
  1. 选择下一步

  2. 配置堆栈选项 页面上,选择 下一步

  3. 审核 页面上,查看并确认设置。选中确认模板创建 AWS Identity and Access Management (IAM) 资源的复选框。

  4. 选择 创建堆栈 部署堆栈。

您可以在 AWS CloudFormation 控制台的 状态 列中查看堆栈的状态。正常情况下,您大约 10 分钟后会看到 CREATE_COMPLETE 状态。

查看仪表板

仪表板包括以下可视化。

Visualization Name Source Field Description
Total Requests
  • log event
显示 Amazon CloudFront 接收的总观众请求次数,包括所有 HTTP 方法以及 HTTP 和 HTTPS 请求。
Edge Locations
  • x-edge-location
显示代表 CloudFront 边缘服务器位置比例的饼图。
Request History
  • log event
展示一个显示事件分布的柱状图。
Unique Visitors
  • c-ip
显示由客户端 IP 地址识别的唯一访客。
Cache Hit Rate
  • sc-bytes
显示从 CloudFront 缓存直接为您的观众请求提供内容的比例,而不是去原始服务器获取内容。
Result Type
  • x-edge-response-result-type
显示对所选 CloudFront 分发的命中、未命中和错误的百分比:
  • Hit - 来自 CloudFront 边缘缓存的对象的观众请求。在访问日志中,这些是 x-edge-response-result-type 值为 Hit 的请求。
  • Miss - 对象不在边缘缓存中的观众请求,所以 CloudFront 必须从您的源获取对象。在访问日志中,这些是 x-edge-response-result-type 值为 Miss 的请求。
  • Error - 导致错误的观众请求,所以 CloudFront 没有提供对象。在访问日志中,这些是 x-edge-response-result-type 值为 Error、LimitExceeded 或 CapacityExceeded 的请求。
图表不包括刷新命中-在边缘缓存中但已过期的对象的请求。在访问日志中,刷新命中是 x-edge-response-result-type 值为 RefreshHit 的请求。
Top Miss URI
  • cs-uri-stem
  • cs-method
显示不在缓存中的前 10 个请求对象。
Bandwidth
  • cs-bytes
  • sc-bytes
提供来自 CloudFront 边缘位置的数据传输活动的洞察。
Bandwidth History
  • cs-bytes
  • sc-bytes
显示来自 CloudFront 边缘位置的数据传输活动的历史趋势。
Top Client IPs
  • c-ip
提供访问您的 Amazon CloudFront 的前 10 个 IP 地址。
Status Code Count
  • sc-status
显示按 HTTP 状态代码(例如 200、404、403 等)分组的对 Amazon CloudFront 的请求计数。
Status History
  • @timestamp
  • sc-status
显示 Amazon CloudFront 在特定时间段返回的 HTTP 状态代码的历史趋势。
Status Code
  • sc-status
标识对 EC2 资源进行更改的用户或 IAM 角色,协助追踪和修改的责任。
Average Time Taken
  • time-taken
此可视化计算并显示 Amazon CloudFront 中各种操作的平均时间(例如 GET、PUT 请求的平均时间等)。
Average Time History
  • time-taken
  • time-to-first-byte
  • @timestamp
显示 Amazon CloudFront 中各种操作的平均时间的历史趋势。
Http Method
  • cs-method
使用饼图显示按 http 请求方法名称(例如 POST、GET、HEAD 等)分组的对 Amazon CloudFront 的请求计数。
Average Time To First Byte
  • time-to-first-byte
提供原始服务器响应第一个字节的响应所需的平均时间。
Top Request URIs
  • cs-uri-stem
  • cs-method
提供访问您的 CloudFront 的前 10 个请求 URIs。
Top User Agents
  • cs-user-agent
提供访问您的 CloudFront 的前 10 个用户代理。
Edge Location Heatmap
  • x-edge-location
  • x-edge-result-type
显示代表每个边缘位置的结果类型的热图。
Top Referers
  • cs-referer
与 Amazon CloudFront 访问的前 10 个引荐者。
Top Countries or Regions
  • c_country
与 Amazon CloudFront 访问的前 10 个国家。

示例仪表板

您可以访问Amazon OpenSearch中的内置仪表板来查看日志数据。更多信息请参阅访问仪表板

您可以点击下面的图像查看高分辨率的示例仪表板。

cloudfront-db

创建日志摄取(Light Engine)

使用日志通控制台

  1. 登录日志通控制台。
  2. 在导航窗格中的 日志分析管道 下,选择 AWS 服务日志
  3. 选择创建日志摄取按钮。
  4. AWS 服务 部分,选择 Amazon CloudFront
  5. 选择Light Engine, 选择下一步
  6. 指定设置 下,为 CloudFront 日志启用选择 自动手动。自动模式将自动检测 CloudFront 日志位置。
    • 对于自动模式,从下拉列表中选择 CloudFront 分配。
    • 对于 手动模式,输入 CloudFront Distribution IDCloudFront 标准日志位置
    • (可选步骤)如果需要跨账户摄取日志,需要先在 账户 的下拉列表中选择一个链接的 AWS 账户
  7. 选择下一步
  8. 日志处理中丰富的字段,可以选择的插件有定位操作系统/代理,开启丰富的字段会增加数据处理的延迟和加工成本,默认不开启。
  9. 指定 Light Engine 配置 部分,如果您要摄取关联的模板化 Grafana 仪表板,请为 样例看板 选择
  10. 你可以选择一个Grafana,如果需要导入一个新的Grafana,可以跳转到Grafana进行配置。
  11. 选择一个S3桶存放分区后的日志。并且定义一个用于存放日志表的名称,我们已经为你预定义了一个表名,你可以根据你的业务需求进行修改。
  12. 日志处理频率,默认为5分钟,最小时间处理频率为1分钟。
  13. 日志生命周期 部分,输入管理 日志合并时间 和 日志归档时间。我们为你提供了默认值,你可以根据你的业务需求来进行调整。
  14. 选择下一步
  15. 如果需要,添加标签。
  16. 选择创建

使用 CloudFormation 堆栈

此自动化 AWS CloudFormation 模板在 AWS 云中部署 日志通- CloudFront 标准日志摄取 解决方案。

在 AWS 控制台中启动 下载模板
AWS 海外区域 启动堆栈 模板
AWS 中国区域 启动堆栈 模板
  1. 登录 AWS 管理控制台并选择以上按钮以启动 AWS CloudFormation 模板。您还可以下载模板开始部署。

  2. 要在不同的 AWS 区域中启动堆栈,请使用控制台导航栏中的区域选择器。

  3. 创建堆栈 页面上,验证正确的模板 URL 显示在 Amazon S3 URL 文本框中,然后选择 下一步

  4. 指定堆栈详细信息 页面上,为您的解决方案堆栈分配一个名称。

  5. 参数 下,查看模板的参数并根据需要进行修改。此解决方案使用以下参数。

    • Pipeline settings 专用参数
    参数 默认 描述
    Pipeline Id <需要输入> pipeline的唯一标识符,如果您需要创建多个ELB pipeline,将不同的CloudFront日志写入到不同的表中时,则必须保证唯一性,可以通过uuidgenerator生成唯一的。
    Staging Bucket Prefix AWSLogs/CloudFrontLogs 日志在临时存储区的存放目录,不同pipeline要保证Prefix的唯一性且无重叠。
    • Destination settings 专用参数
    参数 默认 描述
    Centralized Bucket Name <需要输入> 输入centralized的s3 bucket名称,例如centralized-logging-bucket。
    Centralized Bucket Prefix datalake 输入centralized bucket的路径前缀,默认为datalake,意味着您的数据库的location为s3://{Centralized Bucket Name}/{Centralized Bucket Prefix}/amazon_cl_centralized。
    Centralized Table Name CloudFront 数据写入到Centralized数据库的表名称,按需定义,默认值为CloudFront。
    Enrichment Plugins <可选输入> 丰富的字段,可以选择的插件有定位和操作系统/代理,开启丰富的字段会增加数据处理的延迟和加工成本,默认不开启。
    • Scheduler settings 专用参数
    参数 默认 描述
    LogProcessor Schedule Expression rate(5 minutes) 执行数据加工的任务周期表达式,默认值为每5分钟执行一次LogProcessorr,配置可参考
    LogMerger Schedule Expression cron(0 1 * ? ) 执行数据文件合并的任务周期表达式,默认值为每天1点执行LogMerger,配置可参考
    LogArchive Schedule Expression cron(0 2 * ? ) 执行数据归档的任务周期表达式,默认值为每天2点执行LogArchive,配置可参考
    Age to Merge 7 小文件保留天数,默认值为7,表示会对7天以前的日志进行小文件合并,可按需调整。
    Age to Archive 30 日志保留天数,默认值为30,表示30天以前的数据会进行归档删除,可按需调整。
    • Notification settings 专用参数
    参数 默认 描述
    Notification Service SNS 告警通知方式,如果您的主栈是使用China,则只能选择SNS方式,如果您的主栈是使用Global,则可以使用SNS或SES方式。
    Recipients <需要输入> 告警通知,如果Notification Service为SNS,则此处输入SNS的Topic arn,确保有权限,如果Notification Service为SES,则此处输入邮箱地址,以逗号分隔,确保邮件地址已在SES中Verified identities,创建主stack输入的adminEmail默认会发送验证邮件。
    • Dashboard settings 专用参数
    参数 默认 描述
    Import Dashboards FALSE 是否导入Dashboard到Grafana中,默认值为false,如设置为true,则必须填写Grafana URL和Grafana Service Account Token。
    Grafana URL <可选输入> Grafana访问的URL,例如https://cloudfront-72277319.us-west-2.elb.amazonaws.com。
    Grafana Service Account Token <可选输入> Grafana Service Account Token:Grafana中创建的Service Account Token。
  6. 选择下一步

  7. 配置堆栈选项 页面上,选择 下一步

  8. 审核 页面上,查看并确认设置。选中确认模板创建 AWS Identity and Access Management (IAM) 资源的复选框。

  9. 选择 创建堆栈 部署堆栈。

您可以在 AWS CloudFormation 控制台的 状态 列中查看堆栈的状态。正常情况下,您大约 10 分钟后会看到 CREATE_COMPLETE 状态。

查看仪表板

该仪表板包括以下可视化图表。

Visualization Name Source Field Description
Filters Filters 可以通过查询过滤条件对以下数据进行筛选。
Total Requests log event 显示 Amazon CloudFront 接收的总观众请求次数,包括所有 HTTP 方法以及 HTTP 和 HTTPS 请求。
Unique Vistors c-ip 显示由客户端 IP 地址识别的唯一访客。
Requests History log event 展示一个显示事件分布的柱状图。
Request By Edge Location x-edge-location 显示代表 CloudFront 边缘服务器位置比例的饼图。
HTTP Status Code sc-status 显示按 HTTP 状态代码(例如 200、404、403 等)分组的对 Amazon CloudFront 的请求计数。
Status Code History sc-status 显示 Amazon CloudFront 在特定时间段返回的 HTTP 状态代码的历史趋势。
Status Code Pie sc-status 使用饼图表示基于不同 HTTP 状态代码的请求分布。
Average Processing Time time-taken
time-to-first-byte
此可视化计算并显示 Amazon CloudFront 中各种操作的平均时间(例如 GET、PUT 请求的平均时间等)。
Avg. Processing Time History time-taken
time-to-first-byte
显示 Amazon CloudFront 中各种操作的平均时间的历史趋势。
HTTP Method cs-method 使用饼图显示按 http 请求方法名称(例如 POST、GET、HEAD 等)分组的对 Amazon CloudFront 的请求计数。
Total Bytes cs-bytes
sc-bytes
提供数据传输活动的洞察,包括总字节数传输。
Response Bytes History cs-bytes
sc-bytes
显示接收字节数和发送字节数的历史趋势。
Edge Response Type x-edge-response-result-type 显示对所选 CloudFront 分发的命中、未命中和错误的百分比:
Hit - 来自 CloudFront 边缘缓存的对象的观众请求。在访问日志中,这些是 x-edge-response-result-type 值为 Hit 的请求。
Miss - 对象不在边缘缓存中的观众请求,所以 CloudFront 必须从您的源获取对象。在访问日志中,这些是 x-edge-response-result-type 值为 Miss 的请求。
Error - 导致错误的观众请求,所以 CloudFront 没有提供对象。在访问日志中,这些是 x-edge-response-result-type 值为 Error、LimitExceeded 或 CapacityExceeded 的请求。
图表不包括刷新命中-在边缘缓存中但已过期的对象的请求。在访问日志中,刷新命中是 x-edge-response-result-type 值为 RefreshHit 的请求。
Requests / Origin Requests log event 显示对 CloudFront 发出的请求次数和回源的请求次数。
Requests / Origin Requests Latency log event
time-taken
显示从客户端到 CloudFront 的请求时延和回源请求时延。
Top 20 URLs with most requests log event 根据请求数量统计的前 20 个 URL。
Requests 3xx / 4xx / 5xx error rate log event
sc-status
显示从客户端到 CloudFront 的 3xx/4xx/5xx 状态码比例。
Origin Requests 3xx / 4xx / 5xx error rate log eventsc-status 显示从 CloudFront 到源的 3xx/4xx/5xx 状态码比例。
Top Referring Domains cs(Referer) 根据请求中的 Referer 标头统计的前 20 个域名。
Top User Agents cs(User-Agent) 根据请求中的 User-Agent 标头统计的前 20 个用户代理。
Viewer Country x-edge-location
clientCountry
x-countryname
使用地图显示观众国家/地区的分布。
Viewer City x-edge-location
clientCountry
clientCity
使用地图显示观众城市的分布。
SSL Protocol Version ssl-protocol 显示使用的 SSL 协议版本的比例。
SSL Cipher Suite ssl-cipher 显示使用的 SSL 密码套件的比例。
SSL Handshake Time ssl-handshake-time 显示 SSL 握手时间的分布。
SSL Handshake Time History ssl-handshake-time 显示 SSL 握手时间的历史趋势。
SSL Handshake Failures ssl-handshake-failures 显示 SSL 握手失败的次数。
SSL Handshake Failures History ssl-handshake-failures 显示 SSL 握手失败的历史趋势。
Cache Hit Rate x-edge-response-result-type 显示 CloudFront 边缘缓存命中的比例。
Cache Hit Rate History x-edge-response-result-type 显示 CloudFront 边缘缓存命中率的历史趋势。
Cache Hit Rate by File Extension x-edge-response-result-type
cs-uri-extension
显示不同文件扩展名的边缘缓存命中率。
Cache Hit Rate by Content Type x-edge-response-result-type
cs(Content-Type)
显示不同内容类型的边缘缓存命中率。
Cache Hit Rate by HTTP Method x-edge-response-result-type
cs-method
显示不同 HTTP 方法的边缘缓存命中率。
Cache Hit Rate by HTTP Status Code x-edge-response-result-type
sc-status
显示不同 HTTP 状态码的边缘缓存命中率。
Cache Hit Rate by Query String x-edge-response-result-type
cs-uri-query
显示带有不同查询字符串的边缘缓存命中率。
Cache Hit Rate by Host Header x-edge-response-result-type
cs(Host)
显示不同主机头的边缘缓存命中率。
Cache Hit Rate by Referer Header x-edge-response-result-type
cs(Referer)
显示不同 Referer 头的边缘缓存命中率。
Cache Hit Rate by User Agent Header x-edge-response-result-type
cs(User-Agent)
显示不同 User-Agent 头的边缘缓存命中率。
Cache Hit Rate by Cookie Header x-edge-response-result-type
cs(Cookie)
显示不同 Cookie 头的边缘缓存命中率。
Cache Hit Rate by Accept-Encoding Header x-edge-response-result-type
cs(Accept-Encoding)
显示不同 Accept-Encoding 头的边缘缓存命中率。
Cache Hit Rate by Content Encoding x-edge-response-result-type
cs(Content-Encoding)
显示不同内容编码的边缘缓存命中率。
Cache Hit Rate by Vary Header x-edge-response-result-type
cs(Vary)
显示不同 Vary 头的边缘

示例仪表板

cloudfront