

# 查看 CloudFront 和边缘函数指标
<a name="viewing-cloudfront-metrics"></a>

您可以在 CloudFront 控制台中查看有关您的 CloudFront 分配和[边缘函数](https://aws.amazon.com/cloudfront/features/#Edge_Computing)的运行指标。

**在 CloudFront 中查看 CloudFront 和边缘函数指标**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在导航窗格中，选择 **Monitoring (监控)**。

1. 要查看有关特定 CloudFront 分配或边缘函数的活动的图表，请选择一项，然后选择 **View distribution metrics**（查看分配指标）或 **View metrics**（查看指标）。

1. 您可以通过执行以下操作来自定义图表：

   1. 要更改图表中所显示信息的时间范围，请选择 1h（1 小时）、3h（3 小时）或其他范围，或指定自定义范围。

   1. 要更改 CloudFront 更新图表中信息的频率，请选择刷新图标旁边的下箭头，然后选择一个刷新间隔。默认刷新频率为 1 分钟，不过您可以选择其他选项。

1. 要在 CloudWatch 控制台中查看 CloudFront 图形，请选择**添加到控制面板**。您必须使用美国东部（弗吉尼亚州北部）区域在 CloudWatch 控制台中查看图表。

**Topics**
+ [默认的 CloudFront 分配指标](#monitoring-console.distributions)
+ [启用其他 CloudFront 分配指标](#monitoring-console.distributions-additional)
+ [默认的 Lambda@Edge 函数指标](#monitoring-console.lambda-at-edge)
+ [默认的 CloudFront Functions 指标](#monitoring-console.cloudfront-functions)

## 默认的 CloudFront 分配指标
<a name="monitoring-console.distributions"></a>

所有 CloudFront 分配都包含以下默认指标，无需额外费用：

**请求**  
针对所有 HTTP 方法以及 HTTP 和 HTTPS 请求，CloudFront 收到的查看器请求总数。

**已下载字节**  
查看器针对 `GET` 和 `HEAD` 请求下载的字节总数。

**已上传字节**  
查看器使用 `OPTIONS`、`POST` 和 `PUT` 请求上传到 CloudFront 的字节总数。

**4xx 错误率**  
响应的 HTTP 状态代码为 `4xx` 的所有查看器请求所占的百分比。

**5xx 错误率**  
响应的 HTTP 状态代码为 `5xx` 的所有查看器请求所占的百分比。

**总错误率**  
响应的 HTTP 状态代码为 `4xx` 或 `5xx` 的所有查看器请求所占的百分比。

在 CloudFront 控制台的**监控**页面上，每个 CloudFront 分配都会以图表形式显示这些指标。在每个图表上，总计值按 1 分钟的粒度显示。除了查看图表外，您还可以[将指标报告下载为 CSV 文件](cloudwatch-csv.md)。

## 启用其他 CloudFront 分配指标
<a name="monitoring-console.distributions-additional"></a>

除了默认指标外，您还可以启用其他指标，但需要支付额外费用。有关成本的更多信息，请参阅[估算其他 CloudFront 指标的成本](#monitoring-console.distributions-additional-pricing)。

必须为每个分配单独启用这些额外指标：

**缓存命中率**  
由 CloudFront 从其缓存提供内容的所有可缓存请求的百分比。HTTP `POST` 和 `PUT` 请求及错误不视为可缓存请求。

**来源延迟**  
对于从来源提供内容（而非从 CloudFront 缓存提供内容）的请求，从 CloudFront 接收请求，到开始向网络（而非查看器）提供响应为止所花费的总时间。这也称为*首字节延迟*或 *time-to-first-byte*。

**按状态代码列出的错误率**  
响应的 HTTP 状态代码为 `4xx` 或 `5xx` 范围中的特定代码的所有查看器请求所占的百分比。此指标适用于以下所有错误代码：`401`、`403`、`404`、`502`、`503` 和 `504`。

您可以在 CloudFront 控制台中、使用 CloudFormation、AWS Command Line Interface (AWS CLI) 或 CloudFront API 启用其他指标。

------
#### [ Console ]

**启用其他指标**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在导航窗格中，选择 **Monitoring (监控)**。

1. 选择要为其启用其他指标的分配，然后选择**查看分配指标**。

1. 选择 **Manage additional metrics**（管理其他指标）。

1. 在 **Manage additional metrics**（管理其他指标）窗口中，打开 **Enabled**（启用）。启用其他指标后，您可以关闭 **Manage additional metrics**（管理其他指标）窗口。

   启用其他指标后，它们将显示在图表中。在每个图表上，总计值按 1 分钟的粒度显示。除了查看图表外，您还可以[将指标报告下载为 CSV 文件](cloudwatch-csv.md)。

------
#### [ CloudFormation ]

要使用 CloudFormation 启用其他指标，请使用 `AWS::CloudFront::MonitoringSubscription` 资源类型。以下示例以 YAML 格式显示 CloudFormation 模板语法，用于启用其他指标。

```
Type: AWS::CloudFront::MonitoringSubscription
Properties: 
  DistributionId: EDFDVBD6EXAMPLE
  MonitoringSubscription:
    RealtimeMetricsSubscriptionConfig:
      RealtimeMetricsSubscriptionStatus: Enabled
```

------
#### [ CLI ]

要使用 AWS Command Line Interface (AWS CLI) 管理其他指标，请使用下列命令之一：

**为分配启用其他指标**
+ 使用 **create-monitoring-subscription** 命令，如以下示例所示。将 *EDFDVBD6EXAMPLE* 替换为要为其启用其他指标的分配的 ID。

  ```
  aws cloudfront create-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE --monitoring-subscription RealtimeMetricsSubscriptionConfig={RealtimeMetricsSubscriptionStatus=Enabled}
  ```

**查看是否为分配启用了其他指标**
+ 使用 **get-monitoring-subscription** 命令，如以下示例所示。将 *EDFDVBD6EXAMPLE* 替换为要检查的分配的 ID。

  ```
  aws cloudfront get-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE
  ```

**为分配禁用其他指标**
+ 使用 **delete-monitoring-subscription** 命令，如以下示例所示。将 *EDFDVBD6EXAMPLE* 替换为要为其禁用其他指标的分配的 ID。

  ```
  aws cloudfront delete-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE
  ```

------
#### [ API ]

要使用 CloudFront API 管理其他指标，请使用下列 API 操作之一。
+ 要为分配启用其他指标，请使用 [CreateMonitoringSubscription](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateMonitoringSubscription.html)。
+ 要查看是否为分配启用了其他指标，请使用 [GetMonitoringSubscription](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetMonitoringSubscription.html)。
+ 要为分配禁用其他指标，请使用 [DeleteMonitoringSubscription](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DeleteMonitoringSubscription.html)。

有关这些 API 操作的更多信息，请参阅有关 AWS SDK 或其他 API 客户端的 API 参考文档。

------

### 估算其他 CloudFront 指标的成本
<a name="monitoring-console.distributions-additional-pricing"></a>

当您为某个分配启用其他指标时，CloudFront 会向美国东部（弗吉尼亚州北部）区域的 CloudWatch 发送最多 8 个指标。CloudWatch 为每个指标收取较低的固定费率。每个月对每个指标仅收取一次该费率（每个分配最多 8 个指标）。这是固定费率，因此无论 CloudFront 分配接收或发送的请求或响应数量如何，您的成本都保持不变。有关每个指标的费率，请参阅 [Amazon CloudWatch 定价页面](https://aws.amazon.com/cloudwatch/pricing/)和 [CloudWatch 定价计算器](https://aws.amazon.com/cloudwatch/pricing/#Pricing_calculator)。当您使用 CloudWatch API 检索指标时，将收取额外的 API 费用。

## 默认的 Lambda@Edge 函数指标
<a name="monitoring-console.lambda-at-edge"></a>

可以使用 CloudWatch 指标实时监控与 Lambda@Edge 函数相关的问题。使用这些指标无需额外付费。

当你将 Lambda@Edge 函数附加到 CloudFront 分配中的缓存行为时，Lambda 开始自动向 CloudWatch 发送指标。指标适用于所有 Lambda 区域，但要在 CloudWatch 控制台中查看指标或从 CloudWatch API 获取指标数据，您必须使用美国东部（弗吉尼亚州北部）区域 (`us-east-1`)。指标组名称的格式为：`AWS/CloudFront/distribution-ID`，其中 *distribution-ID* 是与 Lambda@Edge 函数关联的 CloudFront 分配的 ID。有关 Amazon CloudWatch 的更多信息，请参阅 [Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

在 CloudFront 控制台的**监控**页面上，每个 Lambda@Edge 函数都会以图表形式显示以下默认指标：
+ Lambda@Edge 的 `5xx` 错误率
+ Lambda 执行错误
+ Lambda 无效响应
+ Lambda 节流

图表包含调用数、错误、限制等信息。在每个图表上，总计值按 1 分钟的粒度显示，按 AWS 区域分组。

如果您看到错误出现峰值需要调查，您可以选择一个函数，然后按 AWS 区域查看日志，直至您确定哪个函数在哪个 AWS 区域中导致了问题。有关排查 Lambda@Edge 错误的更多信息，请参阅：
+ [如何确定故障类型](lambda-edge-testing-debugging.md#lambda-edge-testing-debugging-failure-type)
+ [ 上的内容分发的四个调试步骤AWS](https://aws.amazon.com/blogs/networking-and-content-delivery/four-steps-for-debugging-your-content-delivery-on-aws/)

## 默认的 CloudFront Functions 指标
<a name="monitoring-console.cloudfront-functions"></a>

CloudFront Functions 将操作指标发送到 Amazon CloudWatch，以便您可以监控自己的函数。查看这些指标可帮助您解决、跟踪和调试问题。CloudFront Functions 向 CloudWatch 发布以下指标：
+ **调用数** (`FunctionInvocations`) – 给定时间内开始（调用）函数的次数。
+ **验证错误数** (`FunctionValidationErrors`) – 函数在给定时间段内产生的验证错误数。当函数成功运行但返回无效数据（无效的[事件对象](functions-event-structure.md)）时，会发生验证错误。
+ **执行错误数** (`FunctionExecutionErrors`) – 给定时间内发生的执行错误数。当函数无法成功完成时，会发生执行错误。
+ **计算利用率** (`FunctionComputeUtilization`) – 函数运行所花费的时间占最大允许时间的百分比。例如，值为 35 表示函数在最大允许时间的 35% 内完成。该指标是介于 0 到 100 之间的数字。

  如果此值达到或接近 100，表明该函数已用尽或接近用尽允许的执行时间，并且后续请求可能会受到限制。如果您的函数以 80% 或更高的利用率运行，建议您检查该函数以缩短执行时间并提高利用率。例如，您可能只想记录错误，那么请简化任何复杂的正则表达式或取消对复杂 JSON 对象的不必要解析。
+ **限制** (`FunctionThrottles`) – 在给定时间段内函数受到限制的次数。下列原因可能导致函数受到限制：
  + 该函数持续超过执行所允许的最长时间
  + 该函数导致编译错误
  + 每秒的请求数异常高

CloudFront KeyValueStore 还向 Amazon CloudWatch 发送以下运营指标：
+ **读取请求**（`KvsReadRequests`）– 该函数在给定时段内从键值存储成功读取的次数。
+ **读取错误**（`KvsReadErrors`）– 该函数在给定时段内从键值存储读取失败的次数。

所有这些指标都在 CloudFront 命名空间中发布到美国东部（弗吉尼亚州北部）区域 (`us-east-1`) 的 CloudWatch。您还可以在 CloudWatch 控制台中查看这些指标。在 CloudWatch 控制台中，您可以查看每个函数或每个分配中每个函数的指标。

您还可以使用 CloudWatch 根据这些指标设置警报。例如，您可以根据执行时间 (`FunctionComputeUtilization`) 指标设置警报，该指标表示函数运行所花费的可用时间百分比。当执行时间在一定时间内达到特定值时。例如，如果您连续 15 分钟选择超过 70% 的可用时间，将触发警报。您可以在创建警报时指定警报的值及其时间单位。

**注意**  
CloudFront Functions 仅为处理生产请求和响应而运行的 `LIVE` 阶段中的函数向 CloudWatch 发送指标。[测试函数](test-function.md)时，CloudFront 不会向 CloudWatch 发送任何指标。测试输出包含有关错误、计算利用率和函数日志（`console.log()` 语句）的信息，但这些信息不会发送到 CloudWatch。

有关如何使用 CloudWatch API 获取这些指标的信息，请参阅[CloudFront 的指标类型](programming-cloudwatch-metrics.md)。