amazon-web-services - 如何获取有关失败的计划 AWS ECS 任务的指标/警报(基于退出代码)

标签 amazon-web-services amazon-ecs amazon-cloudwatch exit-code aws-event-bridge

我们使用 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 可以从该上下文中读取退出代码,并且:
  • 容器/任务名称
  • 起止时间
  • CPU和内存分配

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

    关于amazon-web-services - 如何获取有关失败的计划 AWS ECS 任务的指标/警报(基于退出代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65194982/

    相关文章:

    amazon-web-services - API Gateway 中 VPC-Link HTTPS 端点的匹配证书

    amazon-web-services - AWS fargate 集群 - 限制和最佳实践

    amazon-web-services - 无法删除 AWS Route53 中的私有(private)托管区域

    spring-boot - 带有Spring-cloud-aws和cloudwatch指标的Spring Boot

    amazon-web-services - 是否有一种可接受的方法可以从单个 AWS Lambda 函数记录到多个日志组?

    c# - 如何在 C# 中更新 Cloudwatch 自定义指标?

    amazon-web-services - LaunchConfiguration 和 cfn-hup 可以一起玩吗?

    amazon-web-services - AWS CloudFront 未更新

    amazon-web-services - CloudFormation - IAM - 带标签的访问控制

    docker - AWS 在 ECS 中使用 ECS 优化的 AMI 和 Docker 容器