Amazon EventBridge를 사용한 AWS ECS 작업 배포 실패 알림
19146 단어 awsmicroservicesdevopsmonitoring
우리는 최근 배포를 ECS로 이전하기로 결정했습니다. Ben 삼촌이 말했듯이 — 큰 힘에는 큰 책임이 따른다 — 이 새로운 구현에 대한 모니터링 및 경고를 설정하는 것은 매우 흥미로웠으며 이 블로그 게시물은 우리가 구성한 하나의 특정 경보에 대해 자세히 설명합니다. 배포 중에 ECS 작업이 실패합니까?
실패/오류가 발생할 때 경고를 보내야 하는 Microsoft 팀 웹후크가 있습니다. 이 경고 덤프는 귀하의 경우 다른 응용 프로그램일 수 있습니다.
ECS 작업이 실패할 때마다 알림을 생성하기 위해 Amazon EventBridge 규칙을 활용했습니다. 이를 통해 무엇이 잘못되었는지 확인할 수 있습니다. 아래는 구현의 높은 수준의 블록 다이어그램입니다.
네, 저는 여러분의 눈이 무엇을 찾고 있는지 알고 있습니다. 바로 이벤트 규칙 패턴입니다. 다음은 우리가 사용한 패턴입니다.
{
"detail": {
"group": ["service:<<name of your service>>"],
"lastStatus": ["STOPPED"],
"stoppedReason": [{
"anything-but": {
"prefix": "Scaling activity initiated by (deployment"
}
}]
},
"detail-type": ["ECS Task State Change"],
"source": ["aws.ecs"]
}
요지: https://gist.github.com/akhil-ghatiki/1251a54da8eaaca3c20f5322f5106319.js
규칙에 모든 패턴을 사용할 수 있습니다. 위의 예에서는 값이 서비스 이름인 그룹 키를 기반으로 필터링합니다. 따라서 서비스 이름이 있는 모든 이벤트는 SNS로 전송됩니다. 다음은 규칙 패턴에 필요할 수 있는 다른 속성에 도움이 되는 샘플 이벤트입니다.
{
"version": "0",
"id": "XXXXXXXXXXXXX",
"detail-type": "ECS Task State Change",
"source": "aws.ecs",
"account": "XXXXXXXXX",
"time": "2022-10-10T10:06:29Z",
"region": "XXXXXXXX",
"resources": [
"arn:aws:ecs:XXXXXXXX:XXXXXXXXX:task/XXXXXXXXXX/XXXXXX"
],
"detail": {
"attachments": [
{
"id": "XXXXXXXXXXXXX",
"type": "sdi",
"status": "DELETED",
"details": []
},
{
"id": "XXXXXXXXXXXXX",
"type": "eni",
"status": "DELETED",
"details": [
{
"name": "subnetId",
"value": "XXXXXXXX"
},
{
"name": "networkInterfaceId",
"value": "XXXXXXXX"
},
{
"name": "macAddress",
"value": "XXXXXXXX"
},
{
"name": "privateDnsName",
"value": "XXXXXXXX"
},
{
"name": "privateIPv4Address",
"value": "XXXXXXXX"
}
]
},
{
"id": "XXXXXXXXXXXXX",
"type": "elb",
"status": "DELETED",
"details": []
}
],
"attributes": [
{
"name": "ecs.cpu-architecture",
"value": "XXXXXXXX"
}
],
"availabilityZone": "XXXXXXXXa",
"clusterArn": "arn:aws:ecs:XXXXXXXX:XXXXXXXXX:cluster/XXXXXXXXXX",
"connectivity": "CONNECTED",
"connectivityAt": "2022-10-10T10:05:38.02Z",
"containers": [
{
"containerArn": "arn:aws:ecs:XXXXXXXX:XXXXXXXXX:container/XXXXXXXXXX/XXXXXX/XXXXXXXXX",
"lastStatus": "STOPPED",
"name": "XXXXXXX",
"image": "XXXXXXXX.dkr.ecr.XXXXXXXX.amazonaws.com/XXXXXXXX/XXXXXXX:XXXXXX",
"runtimeId": "XXXXXX-1979092248",
"taskArn": "arn:aws:ecs:XXXXXXXX:XXXXXXXXX:task/XXXXXXXXXX/XXXXXX",
"networkInterfaces": [
{
"attachmentId": "XXXXXXXXX",
"privateIpv4Address": "XXXXXXX"
}
],
"cpu": "0"
}
],
"cpu": "512",
"createdAt": "2022-10-10T10:05:34.301Z",
"desiredStatus": "STOPPED",
"enableExecuteCommand": false,
"ephemeralStorage": {
"sizeInGiB": 20
},
"executionStoppedAt": "2022-10-10T10:05:46.497Z",
"group": "service:XXXXXXX",
"launchType": "FARGATE",
"lastStatus": "STOPPED",
"memory": "1024",
"overrides": {
"containerOverrides": [
{
"name": "XXXXXXX"
}
]
},
"platformVersion": "1.4.0",
"startedBy": "ecs-svc/XXXXXX",
"stoppingAt": "2022-10-10T10:05:56.53Z",
"stoppedAt": "2022-10-10T10:06:29.152Z",
"stoppedReason": "CannotPullContainerError: inspect image has been retried 1 time(s): failed to resolve ref \"XXXXXXXX.dkr.ecr.XXXXXXXX.amazonaws.com/XXXXXXXX/XXXXXXX:XXXXXX\": XXXXXXXX.dkr.ecr.XXXXXXXX.amazonaws.com/XXXXXXXX/XXXXXXX:XXXXXX: not found",
"stopCode": "TaskFailedToStart",
"taskArn": "arn:aws:ecs:XXXXXXXX:XXXXXXXXX:task/XXXXXXXXXX/XXXXXX",
"taskDefinitionArn": "arn:aws:ecs:XXXXXXXX:XXXXXXXXX:task-definition/XXXXXXX:XXX",
"updatedAt": "2022-10-10T10:06:29.152Z",
"version": 4
}
}
요지: https://gist.github.com/akhil-ghatiki/e2654a551d6989ed0cb652318357f20b.js
신스피드!!
Reference
이 문제에 관하여(Amazon EventBridge를 사용한 AWS ECS 작업 배포 실패 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/aws-ecs-task-deployment-failed-alert-using-amazon-eventbridge-562m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)