

# Amazon ECS 服务利用率指标
<a name="service_utilization"></a>

服务利用率指标可用于 CPU、内存以及 EBS 文件系统利用率（条件是您的任务附加有 EBS 卷）。服务级别的指标仅支持具有 Amazon EC2 实例和 Fargate 上托管的任务的服务。

## 服务级别的 CPU 和内存利用率
<a name="service-utilization-cpu-memory"></a>

CPU 和内存利用率以属于集群上某个服务的 Amazon ECS 任务使用的 CPU 和内存占该服务的任务定义中指定的 CPU 和内存的百分比的形式来度量。

在 CloudWatch 中查看这些指标时，您可以选择不同的统计数据：
+ **平均值**：服务中所有任务的平均利用率。使用以下公式计算此项。
+ **最小值**：服务中资源使用量最低的任务的利用率。此项表示资源密集度最低的任务使用的 CPU 或内存与任务定义中指定的使用量相比的百分比。
+ **最大值**：服务中资源使用量最高的任务的利用率。此项表示资源密集度最高的任务使用的 CPU 或内存与任务定义中指定的使用量相比的百分比。

以下公式显示如何计算平均值统计数据：

```
                                  (Total CPU units used by tasks in service) x 100
Service CPU utilization =  --------------------------------------------------------------
                           (Total CPU units specified in the task definition) x (Number of tasks in the service)
```

```
                                     (Total MiB of memory used by tasks in service x 100)
Service memory utilization =  ------------------------------------------------------------------
                              (Total MiB of memory specified in the task definition)  x (Number of tasks in the service)
```

**注意**  
以上公式仅适用于平均值统计数据。最小值和最大值统计数据分别表示资源利用率最低和最高的单个任务，而不是所有任务的汇总计算。

Amazon ECS 每 20 秒收集一次指标。每分钟，Amazon ECS 容器代理都会计算当前用于服务所拥有的每个运行任务的 CPU 单元数和内存 MiB 数。这些信息将报告回 Amazon ECS。它还将计算用于由该服务拥有且正在该集群上运行的所有任务的 CPU 和内存的总量，并将这些数字以占在该服务的任务定义中为该服务指定的总资源的百分比的形式报告给 CloudWatch。最小值和最大值是 20 秒指标的最小值和最大值。平均值是 3 个值的聚合。

如果您指定软限制（`memoryReservation`），它用于计算预留内存量。否则将使用硬限制（`memory`）。有关硬限制和软限制的更多信息，请参阅[任务大小](task_definition_parameters.md#task_size)。

例如，某个服务的任务定义为其所有容器总共指定了 512 个 CPU 单元和 1024 MiB 内存（带硬限制 `memory` 参数）。该服务需要有 1 个正在运行的任务，并且该服务在一个包含 1 个 `c4.large` 容器实例（具有 2,048 个 CPU 单元和 3,768 MiB 总内存）的集群上运行，该集群上没有其他正在运行的任务。尽管该任务指定了 512 个 CPU 单元，但由于它是具有 2048 个 CPU 单元的容器实例上唯一一个正在运行的任务，它最多可以使用指定数量的四倍的资源（2048/512）。但是，1024 MiB 的指定内存量是一个它无法超出的硬限制，因此在这种情况下，服务内存利用率不能超过 100%。

如果上述示例使用了软限制 `memoryReservation` 而不是硬限制 `memory` 参数，则该服务的任务可以根据需要使用超出指定的 1024 MiB 的内存量。在这种情况下，该服务的内存利用率可能会超过 100%。

如果您的应用程序短时间内存利用率突然飙升，您将看不到服务内存利用率的提高，因为 Amazon ECS 每分钟收集多个数据点，然后将它们聚合发送到 CloudWatch 的一个数据点。

如果该任务在某个时间段内执行 CPU 密集型工作并且用尽了 2048 个可用 CPU 单元和 512 MiB 内存，则服务将报告 400% CPU 利用率和 50% 内存利用率。如果该任务处于空闲状态且使用了 128 个 CPU 单元和 128 MiB 内存，则服务将报告 25% CPU 利用率和 12.5% 内存利用率。

**注意**  
在此示例中，在容器级别定义 CPU 单位时，CPU 使用率只会超过 100%。如果在任务级别定义 CPU 单元，利用率将不会超过定义的任务级别限制。

## 服务级别的 EBS 文件系统利用率
<a name="service-utilization-ebs"></a>

服务级别的 EBS 文件系统利用率是通过将属于该服务的任务使用的 EBS 文件系统的总量除以为属于该服务的所有任务分配的 EBS 文件系统存储总量计算得到的。

## 服务 `RUNNING` 任务计数
<a name="cw_running_task_count"></a>

您可以使用 CloudWatch 指标查看您的服务中处于 `RUNNING` 状态的任务数。例如，您可以为此指标设置一个 CloudWatch 警报，用于在您的服务中运行的任务数下降至指定值以下时提醒您。

### Amazon ECS CloudWatch Container Insights 中的服务 `RUNNING` 任务计数
<a name="cw_running_task_count_cwci"></a>

使用 Amazon ECS CloudWatch Container Insights 时，每个集群和每个服务都有一个“运行任务数”（`RunningTaskCount`）指标。可以通过选择加入 `containerInsights` 账户设置来为创建的所有新集群使用 Container Insights，通过在集群创建期间启用集群设置来对单个集群使用它，或者通过 UpdateClusterSettings API 来对现有集群使用它。CloudWatch Container Insights 收集的指标按自定义指标收费。有关 CloudWatch 定价的信息，请参阅 [CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

要查看此指标，请参阅《Amazon CloudWatch 用户指南》**中的 [Amazon ECS Container Insights 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-view-metrics.html)。

# Amazon ECS 服务利用率指标使用案例
<a name="service_utilization-metrics-explanation"></a>

以下列表提供了有关使用 Amazon ECS 指标的信息。
+ **资源利用率监控**：使用统计数据平均值来监控 CPU 和内存消耗模式，建立性能基准并检测性能逐渐下降的趋势。
+ **成本优化**：使用统计数据平均值来监控资源使用情况、调整容器的大小、根据使用模式调整预留以及实施计划的扩展。
+ **性能基准测试**：使用统计数据平均值比较服务修订版之间的指标，建立绩效 KPI 并验证优化改进。
+ **资源下限检测**：使用统计数据平均值确定空闲时段的最低资源需求，设置适当的预留量并检测异常下降情况。
+ **异常检测**：使用统计数据最小值发现异常的资源利用率下降，这些下降表明了潜在的问题，例如初始化失败或意外的空闲时段。
+ **扩展策略完善**：使用统计数据最小值，根据最低可行利用率建立最佳的横向缩减阈值，防止激进扩缩。
+ **容量规划**：使用统计数据最大值设置适当的任务规模，并规划基础设施，为流量高峰留出足够的余量。
+ **性能瓶颈识别**：使用统计数据最大值检测资源饱和点，识别瓶颈并确定何时增加任务规模。
+ **扩展策略配置**：使用统计数据最大值，据根据峰值模式设置最佳横向扩展阈值，并配置容量爆增。
+ **SLA 合规性监控**：使用统计数据最大值跟踪峰值响应时间和错误率，确保服务性能符合定义的 SLA。

## 相关指标信息
<a name="additional-information"></a>

有关 Container Insights 的信息，请参阅《CloudWatch 用户指南》**中的 [Container Insights 使用案例](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ecs-container-insights-use-metrics-cases.html)。