如何配置 CloudWatch Container Insights 以监控我的 ECS 任务和容器部署?

上次更新日期:2022 年 4 月 8 日

我想配置 Amazon CloudWatch Container Insights 来监控我的 Amazon Elastic Container Service(Amazon ECS)任务和容器部署。该如何操作?

简短描述

Container Insights 收集集群、任务和服务级别的指标。这些指标包括 CPU、内存、磁盘和网络等资源的使用情况,它们在 CloudWatch 自动控制面板中提供。

您可以将 Amazon ECS 配置为默认对 Container Insights 启用所有新集群。或者,您可以在创建集群期间使用集群设置在单个集群上启用 Container Insights。您还可以使用 AWS Command Line Interface(AWS CLI)在现有集群上启用 Container Insights。

解决方法

注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

修改账户设置

选择启用 Container Insights 账户设置,为所有新创建的集群启用 Container Insights。

使用 CloudWatch 控制台修改账户设置

  1. 打开 Amazon ECS 控制台
  2. 在导航窗格中,选择要修改账户设置的区域。
  3. 选择 Account Settings(账户设置)。
  4. CloudWatch Container Insights 部分,您可以选中或取消选中为经过身份验证的 AWS Identity and Access Management(IAM)用户和角色的每个账户设置的复选框。完成后选择 Save(保存)。
  5. 在确认屏幕上,选择 Confirm(确认)以保存选择。

当您以 AWS 账户根用户身份登录时,您可以更改账户的默认设置。或者,您可以更改账户中任何特定 IAM 用户或 IAM 角色的设置。

修改账户中所有 IAM 用户或角色的默认账户设置(AWS CLI)

使用此命令修改账户中所有 IAM 用户或角色的默认账户设置。由此产生的更改将应用于整个 AWS 账户,除非 IAM 用户或角色明确覆盖这些设置。

aws ecs put-account-setting-default --name containerInsights --value enabled --region <REGION_NAME>

有关更多信息,请参阅修改账户设置

创建已启用 Container Insights 的集群

您可以使用 Amazon ECS 控制台或 AWS CLI 在集群创建期间启用 Container Insights。

使用控制台创建已启用 Container Insights 的集群

注意:请务必使用新的 Amazon ECS 控制台(v2)来完成这些步骤。如果您想使用经典控制台,请参阅使用经典控制台创建集群

  1. 打开新的 Amazon ECS 控制台
  2. 在导航窗格中,选择要在其中创建集群的区域。
  3. 选择 Clusters(集群),然后选择 Create cluster(创建集群)。
  4. 在集群配置部分,选择创建集群所需的设置。
  5. 展开 Monitoring(监控),然后打开 Use Container Insights(使用 Container Insights)。
  6. 选择 Create(创建)。

使用 AWS CLI 创建已启用 Container Insights 的集群

要创建已启用 Container Insights 的新集群,请运行以下命令:

aws ecs create-cluster --cluster-name <CLUSTER_NAME> --settings "name=containerInsights,value=enabled" --region <REGION_NAME>

在现有 Amazon ECS 集群上启用 Container Insights

要在现有集群上启用 Container Insights,请运行以下命令:

aws ecs update-cluster-settings --cluster <CLUSTER_NAME> --settings name=containerInsights,value=enabled --region <REGION_NAME>

Container Insights 注意事项

使用 CloudWatch Container Insights 时,请注意以下事项:

  • 当您使用 Amazon Elastic Compute Cloud(Amazon EC2)启动类型时,您的任务不需要配置容器 CPU 资源。要显示 ECS 任务级别的 CPU 使用率指标,请在任务定义中定义任务级别或容器级别的 CPU 参数。
  • 网络指标可用于在 AWS Fargate 上运行的所有任务。对于使用桥接模式或 awsvpc 网络模式在 Amazon EC2 实例上运行的任务,也可以使用网络指标。
  • 要从托管在 EC2 实例上的 ECS 集群中收集实例级指标,请部署 CloudWatch 代理。

使用 CloudWatch Logs Insights 查看 Container Insights 数据

Amazon ECS Container Insights 收集的指标不够精细,无法跟踪单个任务。这是因为所有可用的指标都是在任务定义系列级别进行汇总和平均的。要对收集的性能数据进行更深入的分析,请使用 CloudWatch Logs Insights 查询。

Container Insights 性能指标会通过性能日志事件以日志的形式自动收集。打开 CloudWatch Logs Insights 控制台,然后选择以下格式的日志组:

/aws/ecs/containerinsights/<CLUSTER_NAME>/performance

例如,以下查询显示 CPU 和内存的任务级别使用情况:

stats avg(CpuUtilized) as CPU, avg(MemoryUtilized) as Mem by TaskId
| filter Type="Task"
| sort Mem, CPU desc