我们使用 CloudWatch Events/EventBridge 安排了 AWS ECS 任务的设置。我们希望有基于容器退出代码的失败运行的指标和通知。
我们计划使用来自 Monitoring Usage with CloudWatch Metrics 的 FailedInvocations .
但是,在指标中似乎没有看到非零任务退出代码。 ECS 任务的退出代码在 AWS 控制台中被验证为非零,但指标仅包括“调用”和“触发规则”。
我们早先在设置任务时遇到了 FailedInvocations,并且缺少启动任务所需的策略,但非零退出代码似乎不会影响该指标。
仅仅是 EventBridge 不提供非零容器退出代码的指标,还是我们可能会在设置中遗漏某些内容?
我们可以通过记录某些错误消息的任务来解决这个问题,但退出代码会更通用。
最佳答案
我创建了一个 CW 规则,它将捕获容器停止时触发的事件。
这是python CDK代码中的内容,但参数应该有助于指导您。
result_rule = events.Rule(self, 'TaskCompletion%s' % id_suffix,
event_pattern=events.EventPattern(
source=["aws.ecs"],
detail_type=["ECS Task State Change"],
region=[scope.env.region],
detail={
"lastStatus": ["STOPPED"],
"containers":
{
"name": [container_name]
}
}
),
targets=[
targets.SqsQueue(
queue=scope.result_queue,
)
]
)
它将事件的整个上下文发送到 SQS 队列(也可以是 SNS,您可能需要一个 Lambda 来处理它)然后 lambda 可以从该上下文中读取退出代码,并且:
允许您在退出代码(0 或非 0)上创建指标,还可以报告运行时指标。
关于amazon-web-services - 如何获取有关失败的计划 AWS ECS 任务的指标/警报(基于退出代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65194982/