控制台中的 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) 错误
异常任务失败会产生带有 EssentialContainerExited 或 TaskFailedToStart 停止代码的 STOPPED 任务状态更改事件。您可以按这些停止代码进行筛选,以检查容器执行和停止行为。