

# 具有增强型可观测性的 Amazon ECS Container Insights
<a name="Container-Insights-enhanced-observability-metrics-ECS"></a>

具有增强型可观测性的 Container Insights 具备以下特点，可以帮助用户更深入地了解容器化工作负载：
+ 任务和容器级别的更高指标粒度
+ 改进的监控和问题排查功能
+ 与 CloudWatch Logs 集成，可用于：
  + 将指标异常与日志条目相关联
  + 更快地进行根本原因分析
  + 缩短复杂容器问题的解决时间

**使用案例**

具有增强型可观测性的 Container Insights 扩展了标准 Container Insights 的功能，并且支持以下使用案例：
+ **任务级别问题排查**：确定任务级别的性能瓶颈。分析任务级别指标并将指标与预留资源进行比较，确定任务是否有足够的处理能力 
+ **容器级别资源优化**：跟踪预留级别的利用率，确定资源受限或过度预置的容器 
+ **容器运行状况评测**：监控重启计数和状态转换，检测需要干预的不稳定容器 
+ **应用程序性能监控**：跟踪应用程序如何相互通信，监控资源使用模式并优化数据存储性能
+ **运行监控**：监控部署，跟踪蓝色或绿色部署的任务集，并通过服务指标维护平台运行状况

有关 Amazon ECS 指标的更多信息，请参阅 [Amazon ECS 服务利用率指标使用案例](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_utilization-metrics-explanation.html)；有关具有增强型可观测性的 Container Insights 的信息，请参阅[具有增强型可观测性的 Amazon ECS Container Insights 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-enhanced-observability-metrics-ECS.html)。

Container Insights 还会计算所有任务的数据平均值，以显示集群、服务和进程守护程序范围的统计数据。这有助于更深入地了解服务和进程守护程序的运行状况，为环境监控和容量规划提供支持。

**注意**  
Amazon ECS 托管进程守护程序指标使用与服务指标相同的 `ECS/ContainerInsights` 命名空间和 `ServiceName` 维度。对于进程守护程序指标，`ServiceName` 维度值使用 `daemon:daemon-name` 格式。例如，名为 `my-daemon` 的进程守护程序的 `ServiceName` 维度值为 `daemon:my-daemon`。下表中包含 `ServiceName` 维度的所有指标也适用于托管进程守护程序。

下表列出了具有增强型可观测性的 Container Insights 针对 Amazon ECS 收集的指标和维度。这些指标位于 `ECS/ContainerInsights` 命名空间中。有关更多信息，请参阅 [指标](cloudwatch_concepts.md#Metric)。

如果在控制台中未看到任何 Container Insights 指标，请确保已完成具有增强型可观测性的 Container Insights 的设置。在完全设置具有增强型可观测性的 Container Insights 之前，指标不会显示。有关更多信息，请参阅 [设置具有增强型可观测性的 Container Insights](deploy-container-insights-ECS-cluster.md#set-container-insights-ECS-cluster-enhanced)。

以下指标适用于所有启动类型。


| 指标名称 | Dimensions | 说明 | 
| --- | --- | --- | 
|  `ContainerInstanceCount`  |  `ClusterName`  |  注册到集群的运行 Amazon ECS 代理的 EC2 实例的数目。 仅针对在集群中运行 Amazon ECS 任务的容器实例收集此指标。对于没有任何 Amazon ECS 任务的空容器实例，不会收集此指标。 单位：个  | 
|  `ContainerCpuUtilized`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  |  您正在使用的维度集指定资源中容器使用的 CPU 单元。 也适用于托管进程守护程序。 单位：无  | 
|  `ContainerCpuReserved`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  |  您正在使用的维度集指定资源中容器预留的 CPU 单元。根据任务定义（例如任务级别或所有容器级别）中指定的 CPU 预留收集此指标。如果未在任务定义中指定 CPU 预留，则会使用实例 CPU 预留。 也适用于托管进程守护程序。 单位：无  | 
|  `ContainerCpuUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   | 您正在使用的维度集指定资源中容器正在使用的 CPU 单元总百分比。 单位：百分比 | 
|  `ContainerMemoryUtilized`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  |  您正在使用的维度集指定资源中容器正在使用的内存。 也适用于托管进程守护程序。 单位：兆字节  | 
|  `ContainerMemoryReserved`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  |  您正在使用的维度集指定资源中容器预留的内存。 根据任务定义（例如任务级别或所有容器级别）中指定的内存预留收集此指标。如果未在任务定义中指定内存预留，则会使用实例内存预留。 也适用于托管进程守护程序。 单位：兆字节  | 
|  `ContainerMemoryUtilization`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  | 您正在使用的维度集指定资源中容器正在使用的内存总百分比。 也适用于托管进程守护程序。 单位：百分比 | 
|  `ContainerNetworkRxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  您正在使用的维度指定容器接收的字节数。该指标是从 Docker 运行时系统获取的。 此指标仅适用于使用 `awsvpc` 或 `bridge` 网络模式的任务中的容器。 也适用于托管进程守护程序。 单位：字节/秒  | 
|  `ContainerNetworkTxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  您正在使用的维度指定容器传输的字节数。该指标是从 Docker 运行时系统获取的。 此指标仅适用于使用 `awsvpc` 或 `bridge` 网络模式的任务中的容器。 也适用于托管进程守护程序。 单位：字节/秒  | 
|  `ContainerStorageReadBytes`  |  `ClusterName` `ClusterName`, `ServiceName`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `ContainerName` `ClusterName`, `ServiceName`, `TaskId`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `TaskId`, `ContainerName`  |  从您正在使用的维度指定资源中容器上存储读取的字节数。这不包括存储设备的读取字节数。该指标是从 Docker 运行时系统获取的。 也适用于托管进程守护程序。 单位：字节  | 
|  `ContainerStorageWriteBytes`  |  `ClusterName` `ClusterName`, `ServiceName`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `ContainerName` `ClusterName`, `ServiceName`, `TaskId`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `TaskId`, `ContainerName`  |  写入到您正在使用的维度指定容器中存储的字节数。该指标是从 Docker 运行时系统获取的。 也适用于托管进程守护程序。 单位：字节  | 
|  `CpuUtilized`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   |  任务在您使用的维度集所指定的资源中使用的 CPU 单元。 也适用于托管进程守护程序。 单位：无  | 
|  `CpuReserved`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  任务在您使用的维度集所指定的资源中预留的 CPU 单元。根据任务定义（例如任务级别或所有容器级别）中指定的 CPU 预留收集此指标。如果未在任务定义中指定 CPU 预留，则会使用实例 CPU 预留。 也适用于托管进程守护程序。 单位：无  | 
|  `DeploymentCount`  |  `ServiceName`, `ClusterName`  |  Amazon ECS 服务中的部署数。 单位：个  | 
|  `DesiredTaskCount`  |  `ServiceName`, `ClusterName`  |  Amazon ECS 服务所需的任务数。 单位：个  | 
|  `EBSFilesystemSize`  |  `ClusterName` ,`TaskDefinitionFamily`, `VolumeName` `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName`  |  分配给您使用的维度所指定资源的 Amazon EBS 文件系统存储总量，以千兆字节（GB）为单位。 该指标仅适用于使用平台版本 `1.4.0` 在 Fargate 上运行的 Amazon ECS 基础设施上运行的任务，或在使用容器代理版本 `1.79.0` 或更高版本的 Amazon EC2 实例上运行的任务。 也适用于托管进程守护程序。 单位：千兆字节（GB）  | 
|  `EBSFilesystemUtilized`  |  `ClusterName` ,`TaskDefinitionFamily`, `VolumeName` `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName`  |  您使用的维度所指定资源使用的 Amazon EBS 文件系统存储总量，以千兆字节（GB）为单位。 该指标仅适用于使用平台版本 `1.4.0` 在 Fargate 上运行的 Amazon ECS 基础设施上运行的任务，或在使用容器代理版本 `1.79.0` 或更高版本的 Amazon EC2 实例上运行的任务。 对于在 Fargate 上运行的任务，Fargate 会在磁盘上预留仅供 Fargate 使用的空间。Fargate 使用的空间不会产生任何成本，但可以使用类似 `df` 的工具看到额外的存储空间。 也适用于托管进程守护程序。 单位：千兆字节（GB）  | 
|  `TaskEBSFilesystemUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ClusterName`, `ServiceName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `TaskId`  |  您正在使用的维度指定的任务所使用的 Amazon EBS 文件系统存储的百分比。 该指标仅适用于使用平台版本 `1.4.0` 在 Fargate 上运行的 Amazon ECS 基础设施上运行的任务，或在使用容器代理版本 `1.79.0` 或更高版本的 Amazon EC2 实例上运行的任务。 也适用于托管进程守护程序。 单位：百分比  | 
|  EphemeralStorageReserved [1](#ci-enhanced-metrics-ecs-storage-fargate-note)  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  从您使用的维度所指定的资源中临时存储保留的字节数。临时存储用于容器根文件系统以及容器映像和任务定义中所定义的任何绑定装载主机卷。无法在正在运行的任务中更改临时存储量。 该指标仅适用于在 Fargate Linux 平台 1.4.0 或更高版本上运行的任务。 也适用于托管进程守护程序。 单位：千兆字节（GB）  | 
|  EphemeralStorageUtilized [1](Container-Insights-metrics-ECS.md#ci-metrics-ecs-storage-fargate-note)  |  `ClusterName` `ClusterName`, `TaskDefinitionFamily` `ClusterName`, `ServiceName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  从您使用的维度所指定的资源中临时存储使用的字节数。临时存储用于容器根文件系统以及容器映像和任务定义中所定义的任何绑定装载主机卷。无法在正在运行的任务中更改临时存储量。 该指标仅适用于在 Fargate Linux 平台 1.4.0 或更高版本上运行的任务。 也适用于托管进程守护程序。 单位：千兆字节（GB）  | 
|  `MemoryUtilized`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  任务在您使用的维度集所指定的资源中使用的内存。 也适用于托管进程守护程序。 单位：兆字节  | 
|  `MemoryReserved`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  任务在您使用的维度集所指定的资源中预留的内存。 根据任务定义（例如任务级别或所有容器级别）中指定的内存预留收集此指标。如果未在任务定义中指定内存预留，则会使用实例内存预留。 也适用于托管进程守护程序。 单位：兆字节  | 
|  `NetworkRxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  您使用的维度所指定的资源接收的字节数。该指标是从 Docker 运行时系统获取的。 此指标仅适用于使用 `awsvpc` 或 `bridge` 网络模式的任务中的容器。 也适用于托管进程守护程序。 单位：字节/秒  | 
|  `NetworkTxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  您使用的维度所指定的资源传输的字节数。该指标是从 Docker 运行时系统获取的。 此指标仅适用于使用 `awsvpc` 或 `bridge` 网络模式的任务中的容器。 也适用于托管进程守护程序。 单位：字节/秒  | 
|  `PendingTaskCount`  |  `ServiceName`, `ClusterName`  |  当前处于 `PENDING` 状态的任务的数量。 单位：个  | 
|  `RunningTaskCount`  |  `ServiceName`, `ClusterName`  |  当前处于 `RUNNING` 状态的任务的数量。 单位：个  | 
|  `RestartCount`  |  `ClusterName` `ClusterName`, `ServiceName` `ClusterName`, `TaskDefinitionFamily` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId` `ClusterName`, `ServiceName`, `ContainerName` `ClusterName`, `ServiceName`, `TaskId`, `ContainerName` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `TaskDefinitionFamily`, `ClusterName`, `TaskId`, `ContainerName`  |  Amazon ECS 任务中容器重新启动的次数。 仅会对启用了重启策略的容器收集此指标。 也适用于托管进程守护程序。 单位：个  | 
|  `UnHealthyContainerHealthStatus`  |  `ClusterName` `ClusterName`, `ServiceName`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `ContainerName` `ClusterName`, `ServiceName`, `TaskId`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `TaskId`, `ContainerName`  |  基于容器运行状况检查状态的非正常运行容器的数量。当容器的运行状况检查结果为不正常状态时，该容器就被视为不正常。 此指标仅针对在任务定义中已配置运行状况检查的容器进行收集。 当容器运行状况为 `UNHEALTHY` 时，指标值为 1；当运行状况为 `HEALTHY` 时，指标值为 0。 单位：个  | 
|  `ServiceCount`  |  `ClusterName`  |  集群中的服务数。 单位：个  | 
|  `StorageReadBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  从您使用之维度所指定资源中实例上的存储读取的字节数。这不包括存储设备的读取字节数。该指标是从 Docker 运行时系统获取的。 也适用于托管进程守护程序。 单位：字节  | 
|  `StorageWriteBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  写入到您使用的维度所指定的资源中的存储的字节数。该指标是从 Docker 运行时系统获取的。 也适用于托管进程守护程序。 单位：字节  | 
|  `TaskCount`  |  `ClusterName`  |  正在集群中运行的任务数。 单位：个  | 
|  `TaskCpuUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   |  任务使用的 CPU 单元的总百分比。 也适用于托管进程守护程序。 单位：百分比  | 
|  `TaskEphemeralStorageUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   |  任务使用的临时存储总百分比。 也适用于托管进程守护程序。 单位：百分比  | 
|  `TaskMemoryUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   |  任务使用的内存总百分比。 也适用于托管进程守护程序。 单位：百分比  | 
|  `TaskSetCount`  |  `ServiceName`, `ClusterName`  |  服务中设置的任务数。 单位：个  | 

**注意**  
`EphemeralStorageReserved` 和 `EphemeralStorageUtilized` 指标仅适用于在 Fargate Linux 平台 1.4.0 或更高版本上运行的任务。  
Fargate 可保留磁盘空间。该磁盘空间仅由 Fargate 使用。您无需为此付费。它没有显示在这些指标中。但是，您可以在 `df` 等其他工具中看到这种额外的存储空间。

完成[部署 CloudWatch 代理以收集 Amazon ECS 上的 EC2 实例级别指标](deploy-container-insights-ECS-instancelevel.md)中的步骤并使用 EC2 启动类型后，以下指标将可用。


| 指标名称 | Dimensions | 说明 | 
| --- | --- | --- | 
|  `instance_cpu_limit`  |  `ClusterName`  |  可分配给集群中单个 EC2 实例的 CPU 单元最大数目。 单位：无  | 
|  `instance_cpu_reserved_capacity`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  集群中单个 EC2 实例上当前预留的 CPU 的百分比。 单位：百分比  | 
|  `instance_cpu_usage_total`  |  `ClusterName`  |  集群中单个 EC2 实例上正在使用的 CPU 单元的数目。 单位：无  | 
|  `instance_cpu_utilization`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  集群中单个 EC2 实例上正在使用的 CPU 单元的总百分比。 单位：百分比  | 
|  `instance_filesystem_utilization`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  集群中单个 EC2 实例上正在使用的文件系统容量的总百分比。 单位：百分比  | 
|  `instance_memory_limit`  |  `ClusterName`  |  可分配给此集群中单个 EC2 实例的最大内存量（以字节为单位）。 单位：字节  | 
|  `instance_memory_reserved_capacity`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  集群中单个 EC2 实例上当前预留的内存百分比。 单位：百分比  | 
|  `instance_memory_utilization`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  集群中单个 EC2 实例上正在使用的内存总百分比。  如果您的应用程序中使用 Java ZGC 垃圾收集器，则该指标可能不准确。  单位：百分比  | 
|  `instance_memory_working_set`  |  `ClusterName`  |  集群中单个 EC2 实例上正在使用的内存量（以字节为单位）。  如果您的应用程序中使用 Java ZGC 垃圾收集器，则该指标可能不准确。  单位：字节  | 
|  `instance_network_total_bytes`  |  `ClusterName`  |  集群中单个 EC2 实例上通过网络传输和接收的每秒总字节数。 单位：字节/秒  | 
|  `instance_number_of_running_tasks`  |  `ClusterName`  |  集群中单个 EC2 实例上正在运行的任务数。 单位：个  | 