跳转至

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 ID 和 CloudFront 标准日志位置。
    • (可选步骤)如果需要跨账户摄取日志,需要先在 账户 的下拉列表中选择一个链接的 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_agent, geo_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 ID 和 CloudFront 标准日志位置。
    • (可选步骤)如果需要跨账户摄取日志,需要先在 账户 的下拉列表中选择一个链接的 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