3

我们使用 CloudWatch Events / EventBridge 安排了 AWS ECS 任务的设置。我们希望有基于容器退出代码的失败运行的指标和通知。

我们计划将Monitoring Usage 中的 FailedInvocations 与 CloudWatch Metrics 一起使用

但是,似乎在指标中没有看到非零任务退出代码。ECS 任务的退出代码在 AWS 控制台中被验证为非零,但指标仅包括“Invocations”和“TriggeredRules”。我们之前在设置任务时遇到了 FailedInvocations,并且缺少启动任务所需的策略,但非零退出代码似乎不会影响该指标。

仅仅是 EventBridge 不提供非零容器退出代码的指标,还是我们可能会在设置中遗漏某些内容?

我们可以通过记录某些错误消息的任务来解决这个问题,但退出代码会更通用。

4

1 回答 1

1

我创建了一个 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 可以从该上下文中读取退出代码,并且:

  • 容器/任务名称
  • 开始和停止时间
  • CPU 和内存分配

允许您在退出代码(0 或非 0)上创建指标,还可以报告运行时指标。

于 2020-12-11T16:17:28.670 回答