

# Amazon ECS Container Insights 指标
<a name="Container-Insights-metrics-ECS"></a>

Container Insights 指标提供了额外的网络指标、存储指标和临时存储指标。这些指标提供的信息比标准 Amazon ECS 指标要多。Container Insights 与 CloudWatch Logs 集成。您可以将指标更改与日志条目相关联，以便于进行问题排查。Container Insights 还会计算所有任务的数据平均值，以显示集群、服务和进程守护程序范围的统计数据。这有助于更深入地了解服务和进程守护程序的运行状况，为环境监控和容量规划提供支持。

**使用案例**
+ **问题识别和故障排除**：通过分析任务状态转换模式来跟踪失败的部署，从而快速识别故障点。通过全面检查任务启动顺序和初始化行为来诊断配置问题
+ **集群和服务级别运行状况评测**：显示整个集群的平均任务性能。这种方法可以调节异常值，提供更稳定的集群和服务运行状况视图。使用这些洞察进行一般服务监控，极值在一般服务监控中可能会产生误导 
+ **服务可用性问题**：通过监控正在运行的任务计数指标来检测失败的部署。将服务事件日志与性能指标相关联，了解基础设施的影响。跟踪任务重启模式以发现不稳定的服务或基础设施问题
+ **平均负载的容量规划**：有助于根据典型的任务行为模式确定资源需求，提供适用于有效长期规划的一致指标，并减少短期峰值对容量决策的影响
+ **提供其他指标**：收集公开发布的指标中不可用的其他网络指标、存储指标和临时存储指标

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

**注意**  
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.md)。

完成[在 Amazon ECS 上设置 Container Insights](deploy-container-insights-ECS-cluster.md)中的步骤后，以下指标将可用。


| 指标名称 | Dimensions | 说明 | 
| --- | --- | --- | 
|  `ContainerInstanceCount`  |  `ClusterName`  |  注册到集群的运行 Amazon ECS 代理的 EC2 实例的数目。 仅针对在集群中运行 Amazon ECS 任务的容器实例收集此指标。对于没有任何 Amazon ECS 任务的空容器实例，不会收集此指标。 单位：个  | 
|  `CpuUtilized`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  任务在您使用的维度集所指定的资源中使用的 CPU 单元。 也适用于托管进程守护程序。 单位：无  | 
|  `CpuReserved`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  任务在您使用的维度集所指定的资源中预留的 CPU 单元。 根据任务定义（例如任务级别或所有容器级别）中指定的 CPU 预留收集此指标。如果未在任务定义中指定 CPU 预留，则会使用实例 CPU 预留。 也适用于托管进程守护程序。 单位：无  | 
|  `DeploymentCount`  |  `ServiceName`, `ClusterName`  |  Amazon ECS 服务中的部署数。 单位：个  | 
|  `DesiredTaskCount`  |  `ServiceName`, `ClusterName`  |  Amazon ECS 服务所需的任务数。 单位：个  | 
|  `EBSFilesystemSize`  |  `VolumeName`, `TaskDefinitionFamily`, `ClusterName` `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName`  |  分配给您使用的维度所指定资源的 Amazon EBS 文件系统存储总量，以千兆字节（GB）为单位。 该指标仅适用于使用平台版本 `1.4.0` 在 Fargate 上运行的 Amazon ECS 基础设施上运行的任务，或在使用容器代理版本 `1.79.0` 或更高版本的 Amazon EC2 实例上运行的任务。 也适用于托管进程守护程序。 单位：千兆字节（GB）  | 
|  `EBSFilesystemUtilized`  |  `VolumeName`, `TaskDefinitionFamily`, `ClusterName` `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName`  |  您使用的维度所指定资源使用的 Amazon EBS 文件系统存储总量，以千兆字节（GB）为单位。 该指标仅适用于使用平台版本 `1.4.0` 在 Fargate 上运行的 Amazon ECS 基础设施上运行的任务，或在使用容器代理版本 `1.79.0` 或更高版本的 Amazon EC2 实例上运行的任务。 对于在 Fargate 上运行的任务，Fargate 会在磁盘上预留仅供 Fargate 使用的空间。Fargate 使用的空间不会产生任何成本，但可以使用类似 `df` 的工具看到额外的存储空间。 也适用于托管进程守护程序。 单位：千兆字节（GB）  | 
|  EphemeralStorageReserved [1](#ci-metrics-ecs-storage-fargate-note)  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  从您使用的维度所指定的资源中临时存储保留的字节数。临时存储用于容器根文件系统以及容器映像和任务定义中所定义的任何绑定装载主机卷。无法在正在运行的任务中更改临时存储量。 该指标仅适用于在 Fargate Linux 平台 1.4.0 或更高版本上运行的任务。 也适用于托管进程守护程序。 单位：千兆字节（GB）  | 
|  EphemeralStorageUtilized [1](#ci-metrics-ecs-storage-fargate-note)  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  从您使用的维度所指定的资源中临时存储使用的字节数。临时存储用于容器根文件系统以及容器映像和任务定义中所定义的任何绑定装载主机卷。无法在正在运行的任务中更改临时存储量。 该指标仅适用于在 Fargate Linux 平台 1.4.0 或更高版本上运行的任务。 也适用于托管进程守护程序。 单位：千兆字节（GB）  | 
|  `InstanceOSFilesystemUtilization`  |  `CapacityProviderName`, `ClusterName`, `ContainerInstanceId`, `EC2InstanceId` `ClusterName`  |  操作系统卷已使用磁盘空间占总磁盘空间的百分比。  | 
|  `InstanceDataFilesystemUtilization`  |  `CapacityProviderName`, `ClusterName`, `ContainerInstanceId`, `EC2InstanceId` `ClusterName`  |  数据卷已使用磁盘空间占总磁盘空间的百分比。  | 
|  `MemoryUtilized`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  任务在您使用的维度集所指定的资源中使用的内存。  如果您的应用程序中使用 Java ZGC 垃圾收集器，则该指标可能不准确。 尽管 `MemoryUtilized` 和 `MemoryReserved` 都标记为“兆字节”，但实际单位是 MiB（二进制兆字节）。  也适用于托管进程守护程序。 单位：兆字节  | 
|  `MemoryReserved`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  任务在您使用的维度集所指定的资源中预留的内存。根据任务定义（例如任务级别或所有容器级别）中指定的内存预留收集此指标。如果未在任务定义中指定内存预留，则会使用实例内存预留。 也适用于托管进程守护程序。 单位：兆字节  尽管 `MemoryUtilized` 和 `MemoryReserved` 都标记为“兆字节”，但实际单位是 MiB（二进制兆字节）。   | 
|  `NetworkRxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  您使用的维度所指定的资源接收的字节数。该指标是从 Docker 运行时系统获取的。 此指标仅适用于使用 `awsvpc` 或 `bridge` 网络模式的任务中的容器。 也适用于托管进程守护程序。 单位：字节/秒  | 
|  `NetworkTxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  您使用的维度所指定的资源传输的字节数。该指标是从 Docker 运行时系统获取的。 此指标仅适用于使用 `awsvpc` 或 `bridge` 网络模式的任务中的容器。 也适用于托管进程守护程序。 单位：字节/秒  | 
|  `PendingTaskCount`  |  `ServiceName`, `ClusterName`  |  当前处于 `PENDING` 状态的任务的数量。 单位：个  | 
|  `RunningTaskCount`  |  `ServiceName`, `ClusterName`  |  当前处于 `RUNNING` 状态的任务的数量。 单位：个  | 
|  `RestartCount`  |  `ClusterName` `ClusterName`, `ServiceName` `ClusterName`, `TaskDefinitionFamily`  |  Amazon ECS 任务中容器重新启动的次数。 仅会对启用了重启策略的容器收集此指标。 也适用于托管进程守护程序。 单位：个  | 
|  `ServiceCount`  |  `ClusterName`  |  集群中的服务数。 单位：个  | 
|  `StorageReadBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  从您使用之维度所指定资源中实例上的存储读取的字节数。这不包括存储设备的读取字节数。该指标是从 Docker 运行时系统获取的。 也适用于托管进程守护程序。 单位：字节  | 
|  `StorageWriteBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  写入到您使用的维度所指定的资源中的存储的字节数。该指标是从 Docker 运行时系统获取的。 也适用于托管进程守护程序。 单位：字节  | 
|  `TaskCount`  |  `ClusterName`  |  正在集群中运行的任务数。 单位：个  | 
|  `TaskSetCount`  |  `ServiceName`, `ClusterName`  |  服务中设置的任务数。 单位：个  | 

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

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


| 指标名称 | 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 实例上正在运行的任务的数目。 单位：个  | 