CloudWatch 警报 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CloudWatch 警报

您可以将 Amazon ECS 配置为在检测到指定 CloudWatch 警报已进入ALARM状态时将部署设置为失败。

您可以选择设置配置,将失败的部署回滚到上一个完成的部署。

以下create-service Amazon CLI 示例说明部署警报与回滚选项一起使用时如何创建 Linux 服务。

aws ecs create-service \ --service-name MyService \ --deployment-controller type=ECS \ --desired-count 3 \ --deployment-configuration "alarms={alarmNames=[alarm1Name,alarm2Name],enable=true,rollback=true}" \ --task-definition sample-fargate:1 \ --launch-type FARGATE \ --platform-family LINUX \ --platform-version 1.4.0 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

在服务上使用 Amazon CloudWatch 警报方法时,请考虑以下几点。

  • deploymentConfiguration 请求参数现在包含 alarms 数据类型。您可以指定警报名称、是否使用该方法以及在警报显示部署故障时是否启动回滚。有关更多信息,请参阅CreateService亚马逊弹性容器服务 API 参考》。

  • DescribeServices 响应提供了对部署状态、rolloutStaterolloutStateReason 的深入了解。启动新部署时,回滚状态将在 IN_PROGRESS 状态开始。当服务达到稳定状态时,烘焙时间完成,回滚状态将转换为 COMPLETED。如果服务未能达到稳定状态并且警报已进入 ALARM 状态,则部署将转换为 FAILED 状态。FAILED 状态中的部署不会启动任何新任务。

  • 除了 Amazon ECS 为已启动和已完成的部署发送的服务部署状态更改事件外,Amazon ECS 还将在使用警报的部署失败时发送事件。这些事件提供了有关部署失败的原因或部署是否由于回滚而启动的详细信息。有关更多信息,请参阅 Amazon ECS 服务部署状态更改事件

  • 如果由于以前的部署失败并打开了回滚而启动了新部署,则服务部署状态更改事件的 reason 字段将指示部署是由于回滚而启动的。

  • 如果您使用部署断路器和 Amazon CloudWatch 警报来检测故障,则只要满足任一方法的标准,任何一个都可能启动部署失败。当您对启动部署故障的方法使用回滚选项时,会发生回滚。

  • 只有使用滚动更新 (ECS) 部署控制器的 Amazon ECS 服务才支持 Amazon CloudWatch 警报。

  • 您可以使用 Amazon ECS 控制台来配置此选项,或者 Amazon CLI。这种方法的示例是,如果有关更多信息,请参阅《Amazon Command Line Interface 参考》中的 使用定义的参数创建服务create-service

  • 您可能会注意到,部署状态会长时间处于 IN_PROGRESS。其原因是,只有在删除活动部署后 Amazon ECS 才会更改状态,而这种情况要等到烘焙时间之后才会发生。根据您的警报配置,部署所需的时间可能比在不使用警报时长几分钟(即使新的主要任务集已纵向扩展而旧的部署已缩减)。如果您使用 CloudFormation 超时,请考虑增加超时时间。有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的在模板中创建等待条件

  • Amazon ECS 调用 DescribeAlarms 轮询警报。要DescribeAlarms计入与您的账户关联的 CloudWatch 服务配额的呼叫。如果您有其他 Amazon 服务需要调用DescribeAlarms,则轮询警报可能会对 Amazon ECS 产生影响。例如,如果其他服务拨打的DescribeAlarms调用次数足以达到配额,则该服务会受到限制,Amazon ECS 也会受到限制,无法轮询警报。如果在限制期间生成警报,Amazon ECS 可能会错过警报,也可能不会进行回滚。对部署没有其他影响。有关 CloudWatch 服务配额的更多信息,请参阅《CloudWatch 用户指南》中的CloudWatch 服务配额

  • 如果警报在部署开始时处于 ALARM 状态,则 Amazon ECS 在该部署期间不会监控警报(Amazon ECS 将忽略警报配置)。此行为解决了您想要开始新部署以修复初始部署失败的情况。

建议的警报

我们建议您使用以下警报指标:

  • 如果您使用应用程序负载均衡器,请使用 HTTPCode_ELB_5XX_CountHTTPCode_ELB_4XX_Count 应用程序负载均衡器指标。这些指标检查 HTTP 峰值。有关 Application Load Balancer CloudWatch 指标的更多信息,请参阅应用程序负载均衡器用户指南中的应用程序负载均衡器指标。

  • 如果您有现有的应用程序,请使用 CPUUtilizationMemoryUtilization 指标。这些指标检查集群或服务使用的 CPU 和内存百分比。有关更多信息,请参阅 注意事项

  • 如果您在任务中使用 Amazon Simple Queue Service 队列,请使用 ApproximateNumberOfMessagesNotVisible Amazon SQS 指标。该指标检查队列中延迟且无法立即读取的消息数量。有关亚马逊 SQS 指标的更多信息,请参阅亚马逊简单队列服务开发者指南中的亚马逊 SQS 可用 CloudWatch 指标