控制台中的 Amazon ECS 事件捕获 - Amazon Elastic Container Service

控制台中的 Amazon ECS 事件捕获

Amazon ECS 控制台提供事件捕获功能,可通过 EventBridge 将 Amazon ECS 生成的事件(例如服务操作和任务状态更改)存储到 Amazon CloudWatch Logs。此功能包括一个带有筛选功能的查询接口,用于监控和故障排除。

事件提供有关服务部署、服务、任务和实例如何运行的详细信息。您可以使用此信息来排查任务或服务部署失败。

开启事件捕获后,您可以访问在您选择的保留期内 Amazon ECS 生成的所有事件,其超出了最近 100 个未经筛选的事件或仅在 1 小时内可见的已停止任务的原生限制。

工作原理

事件捕获使用 EventBridge 将事件存储在预定义的 Amazon CloudWatch Logs 日志组中。Amazon ECS 控制台提供预构建的查询和筛选选项,并将事件关联起来,以直观的格式提供任务生命周期。

您可以查询和检索以下类型的事件:

  • 服务操作事件 – 帮助识别预置或资源分配问题

  • 任务生命周期事件 – 帮助确定任务或容器启动失败或停止运行的原因

Amazon ECS 控制台允许您一键设置事件捕获,并提供常用查询和筛选功能,而无需您学习查询语言或在多个控制台之间导航。

事件类型

事件捕获会将所有 Amazon ECS 生成的事件按以下类别存储:

任务状态更改事件

容器停止和其他终止事件,您可以利用这些事件进行故障排除或监控任务生命周期时间线。

服务操作

诸如达到稳定状态、任务放置失败或资源限制等事件。

服务部署状态更改

由断路器和回滚设置触发的事件(例如,正在进行中、已完成或失败的部署),用于监控服务部署的状态。

容器实例状态更改

对于 EC2 和 Amazon ECS 托管实例上的工作负载,事件会显示已连接和已断开连接状态。

日志组配置

启用事件捕获后,Amazon ECS 会自动创建以下资源:

  • 名为 /aws/events/ecs/containerinsights/${clusterName}/performance 的 Amazon CloudWatch Logs 日志组

  • 一条 EventBridge 规则,用于从 aws.ecs 源摄取所有事件并将其转发到日志组

您可以为日志组指定保留期,1 天到 10 年不等。默认保留期为 7 天。

注意事项

使用事件捕获时,请考虑以下事项:

  • 为了简单起见,事件捕获会存储所有事件。您无法在 Amazon ECS 控制台中配置规则以仅捕获特定事件。

  • Amazon ECS 控制台提供预定义的查询条件。对于高级查询,请使用 Amazon CloudWatch Logs Logs Insights 直接查询日志组。

  • Amazon ECS 控制台不提供 Live Tail 功能。直接将 Amazon CloudWatch Logs 用于 Live Tail。

  • 禁用事件捕获时,EventBridge 规则将被删除。

  • 事件捕获会对 EventBridge 数据摄取、Amazon CloudWatch Logs 存储和查询执行产生额外费用。

    有关 EventBridge 定价的信息,请参阅 EventBridge 定价

    有关 CloudWatch 定价的信息,请参阅 CloudWatch 定价

基于事件的故障排除

使用 Amazon ECS 生成的事件来解答常见的故障排除问题。

任务失败分析

您可以查看 STOPPED 任务状态更改事件、停止代码和容器退出代码,以确定任务启动失败或运行失败的原因。

您可以查看服务操作事件中的放置失败和资源约束信息,以确定任务因资源约束而放置失败的原因

常见任务失败场景

最常见的异常任务失败与下面的问题有关:

  • CI/CD 服务部署失败

  • 自动扩缩失败

  • 任务重新平衡失败

  • 异常容器退出,例如内存不足 (OOM) 错误

异常任务失败会产生带有 EssentialContainerExitedTaskFailedToStart 停止代码的 STOPPED 任务状态更改事件。您可以按这些停止代码进行筛选,以检查容器执行和停止行为。