Lambda의 주요 CloudWatch metrics
- Invocations ... 호출 횟수
- Duration ...실행 시간
- Errors ...에러 횟수
- Throttles ...호출이 제한된 수
- IteratorAge ...스트리밍 데이터 처리 시간
- ConcurrentExecutions ... 동시 실행 수
1. Invocations
Invocations는 Lambda 함수가 호출된 횟수이다.
다른 AWS 서비스(예: S3 event, API Gateway 등)를 통해 호출 될 때마다 Invocations 메트릭이 증가한다.
Invocation이 0이면 호출되지 않았다는 것을 뜻한다.
이를 통해 함수가 얼마나 자주 실행되었는지 알 수 있다.
2. Duration
Lambda 함수가 시작해서 종료될 때까지 걸린 총 시간(밀리초, millisecond)이다.
Duration은 Lambda에서 총 걸린 시간이다. 다음과 같은 요소를 모두 포함된 시간이다.
- 초기화 시간 (cold start): 함수가 처음 호출될 때, 즉 Lambda 환경이 초기화될 때 발생하는 시간.
- 코드 실행 시간: Lambda 함수 내에서 작성한 코드가 실행된 시간.
- 리소스 준비 시간: Lambda 함수가 외부 리소스(예: 데이터베이스)에 접근하기 위해 준비하는 데 걸리는 시간.
3. Errors
함수 실행 중 발생한 오류의 횟수
4. Throttles
Throttles는 Lambda 함수 호출이 제한되어 거부된 횟수이다.
이는 Lambda 함수 호출이 과도하여 AWS측에서 제한을 걸었을 때 발생한다.
기본적으로 각 AWS 계정의 Lambda 함수에는 Concurrent Execution Limit(동시 실행 한도)라는 것이 자동으로 설정되어 있다. Throttles는 이를 초과하여 함수가 호출되었을 때 발생하는 제한이다.
5. IteratorAge
스트리밍 이벤트(예: Kinesis, DynamoDB Streams)에서 Lambda 함수가 특정 이벤트를 처리할 때까지 걸린 시간이다.
스트리밍 데이터를 처리할 때 delay가 얼마나 발생하는지 확인하는 데 유용하다.
일반적으로 이 값은 초 단위로 측정되며, 낮은 Iterator Age는 Lambda가 이벤트를 빠르게 처리하고 있다는 의미이고, 높은 Iterator Age는 Lambda 함수가 데이터를 처리하는 데 지연이 있다는 뜻이다.
IteratorAge 자세한 내용: https://jibinary.tistory.com/555
6. ConcurrentExecutions
동시에 실행되는 Lambda 함수의 수이다.
이를 통해 Lambda 함수의 동시 실행 수를 모니터링하여 제한에 도달하지 않도록 관리할 수 있다.
🤔 문제
회사는 Amazon S3 버킷에서 매시간 데이터 파일을 받아야 합니다. 파일이 도착할 때마다 S3 event notification이 AWS Lambda 함수를 호출하며, 함수는 데이터를 처리하여 애플리케이션에서 사용할 수 있도록 합니다.
애플리케이션 팀은 간혹 파일이 도착하지 않는 경우가 있음을 발견했습니다. 애플리케이션 팀은 파일이 도착하지 않을 때마다 알림을 받고자 합니다.
가장 운영 효율적인 솔루션은 무엇입니까?
- 한 시간 전에 생성된 객체로 범위를 제한하여 S3 버킷에 대해 S3 라이프사이클 규칙을 추가합니다.
라이프사이클 전환 시 객체 수가 0개인 경우 호출되도록 또 다른 S3 event notification을 구성합니다.
Amazon Simple Notification Service(Amazon SNS) Topic에 메시지를 게시하여 애플리케이션 팀에 알립니다. - 또 다른 S3 event notification을 구성하여 Lambda 함수를 호출하고, Lambda 함수가 메시지를 Amazon Simple Queue Service(Amazon SQS) Queue에 게시하도록 합니다.
CloudWatch Alarm를 생성하여 대기열의 ApproximateAgeOfOldestMessage 메트릭이 1시간을 초과하면 Amazon Simple Notification Service(Amazon SNS) Topic에 메시지를 게시하도록 설정합니다. 이를 통해 애플리케이션 팀에 알립니다. - CloudWatch Alarm를 생성하여 Lambda 함수의 Invocations 메트릭이 1시간 동안 0일 경우 Amazon Simple Notification Service(Amazon SNS) Topic에 메시지를 게시하도록 설정합니다. 경보에서 누락된 데이터를 위반으로 처리하도록 구성합니다.
- S3 버킷의 최신 파일 타임스탬프를 가져오는 새 Lambda 함수를 만듭니다.
타임스탬프가 1시간 이상 이전일 경우 Amazon Simple Notification Service(Amazon SNS) Topic에 메시지를 게시하여 애플리케이션 팀에 알립니다.
Amazon EventBridge(Amazon CloudWatch Events) 규칙을 만들어 새로운 함수를 매시간 호출하도록 설정합니다.
정답
정답. 3번
- CloudWatch Alarm과 SNS만 설정하면 된다. → 효율적이다.
- CloudWatch는 Lambda의 Invocations 메트릭을 실시간으로 모니터링한다.
- Invocations 메트릭이 0이면, S3 파일이 도착하지 않아 Lambda가 호출되지 않았음을 의미한다.
- 즉각적으로 알림(SNS)을 통해 문제를 감지할 수 있다.
- CloudWatch Alarm에서 TreatMissingData=Breaching 설정을 통해 누락된 경우에도 문제로 간주하여 알림을 보낼 수 있다.
1번 (❌ 오답)
- S3 Lifecycle 규칙은 즉각적으로 실행되지 않으므로 지연이 발생할 수 있다.
- S3 Lifecycle은 이렇게 시스템 내에서 알람을 보내고 싶을 때 사용하는 것이 아니다.
Lifecycle transition (라이프사이클 전환):
S3 lifecycle 규칙에 따라 객체가 스토리지 클래스가 다른 스토리지 클래스로 전환되는 작업
예시) S3 Standard → S3 Standard-IA (Infrequent Access)
2번 (❌ 오답)
ApproximateAgeOfOldestMessage
는 SQS Queue에 남아 있는 가장 오래된 메시지가 추가된 이후 경과된 시간을 초 단위 나타내는 메트릭이다.
이 문제에서는 파일이 S3 버킷에 도착하지 않은 상황을 감지해야 하므로, 이 메트릭은 적합하지 않다.
그리고 S3 event notification, Lambda, SQS, CloudWatch Alarm, SNS 등 너무 많은 AWS 서비스를 연결하기 때문에 너무 복잡하다.
4번 (❌ 오답)
'클라우드(AWS) > SOA-C02' 카테고리의 다른 글
[AWS] RDS Performance Insights란? 쉽게 정리 (0) | 2025.01.18 |
---|---|
[AWS] CloudFormation Custom Resource 란? 쉽게 정리 (0) | 2025.01.17 |
[AWS] CloudFormation "DependsOn" 속성이란? 쉽게 정리 (0) | 2025.01.15 |
[AWS] Cost Allocation Tags란? 쉽게 정리 (비용 할당 태그) (0) | 2025.01.15 |
[AWS] procstat plugin란? 쉽게 정리 (feat. CloudWatch Agent) (0) | 2025.01.12 |