Lambda 함수의 지표 유형
Lambda 함수의 지표 유형
이 섹션에서는 CloudWatch 콘솔에서 사용할 수 있는 Lambda 지표의 유형을 설명해요.
본문
Topics
호출 지표
호출 지표는 Lambda 함수 호출 결과의 이진(binary) 지표입니다. 이 지표는 Sum 통계로 확인하세요. 예를 들어 함수가 오류를 반환하면 Lambda는 값이 1인 Errors 지표를 보냅니다. 매분 발생한 함수 오류 수를 얻으려면 1분 주기의 Errors 지표 Sum을 확인하세요.
-
Invocations— 함수 코드가 호출된 횟수로, 성공적인 호출과 함수 오류를 초래한 호출을 모두 포함합니다. 호출 요청이 스로틀링되거나 그 외에 호출 오류를 초래하면 Invocations는 기록되지 않습니다.Invocations값은 청구된 요청 수와 같습니다. -
Errors— 함수 오류를 초래한 호출 수. 함수 오류에는 코드가 던지는 예외와 Lambda 런타임이 던지는 예외가 포함됩니다. 런타임은 타임아웃과 구성 오류 같은 문제에 대해 오류를 반환합니다. 오류율을 계산하려면Errors값을Invocations값으로 나누세요. 오류 지표의 타임스탬프는 오류가 발생한 시점이 아니라 함수가 호출된 시점을 반영한다는 점을 주의하세요. -
DeadLetterErrors— 비동기 호출의 경우 Lambda가 이벤트를 데드 레터 큐(DLQ)로 보내려고 시도했지만 실패한 횟수입니다. 데드 레터 오류는 잘못 설정된 리소스나 크기 제한으로 인해 발생할 수 있습니다. -
DestinationDeliveryFailures— 비동기 호출 및 지원되는 이벤트 소스 매핑의 경우 Lambda가 이벤트를 대상(destination)으로 보내려고 시도했지만 실패한 횟수입니다. 이벤트 소스 매핑의 경우 Lambda는 스트림 소스(DynamoDB와 Kinesis)에 대한 대상을 지원합니다. 전달 오류는 권한 오류, 잘못 구성된 리소스, 또는 크기 제한으로 인해 발생할 수 있습니다. 구성된 대상이 Amazon SQS FIFO 큐나 Amazon SNS FIFO 주제 같은 지원되지 않는 유형인 경우에도 오류가 발생할 수 있습니다. -
Throttles— 스로틀링된 호출 요청 수. 모든 함수 인스턴스가 요청을 처리 중이고 확장할 동시성이 없으면 Lambda는TooManyRequestsException오류로 추가 요청을 거부합니다. 스로틀링된 요청과 다른 호출 오류는Invocations나Errors로 모두 계산되지 않습니다.참고
Lambda Managed Instances를 사용하면 스로틀을 일으키는 특정 제약 조건을 식별하는 세분화된 스로틀 지표를 Lambda가 제공합니다. 실행 환경에서 스로틀이 발생하면 다음 하위 지표 중 정확히 하나가 값 1로 발행되고, 나머지 세 개는 값 0으로 발행됩니다.
Throttles지표는 항상 이 하위 지표들과 함께 발행됩니다.CPUThrottles— 실행 환경의 CPU 고갈로 인해 스로틀링된 호출.MemoryThrottles— 실행 환경의 메모리 고갈로 인해 스로틀링된 호출.DiskThrottles— 실행 환경의 디스크 고갈로 인해 스로틀링된 호출.ConcurrencyThrottles— 실행 환경 동시성 한도에 도달했을 때 스로틀링된 호출.
-
OversizedRecordCount— Amazon DocumentDB 이벤트 소스의 경우 함수가 변경 스트림에서 받은 이벤트 중 6MB를 초과하는 이벤트 수입니다. Lambda는 메시지를 버리고 이 지표를 발행합니다. -
ProvisionedConcurrencyInvocations— 프로비저닝 동시성을 사용해 함수 코드가 호출된 횟수입니다. -
ProvisionedConcurrencySpilloverInvocations— 모든 프로비저닝 동시성이 사용 중일 때 표준 동시성을 사용해 함수 코드가 호출된 횟수입니다. -
RecursiveInvocationsDropped— Lambda가 함수를 무한 재귀 루프의 일부로 감지해 함수 호출을 중지한 횟수입니다. 재귀 루프 감지는 지원되는 AWS SDK가 추가하는 메타데이터를 추적해 함수가 요청 체인의 일부로 몇 번 호출되는지 모니터링합니다. 기본적으로 함수가 요청 체인의 일부로 약 16번 호출되면 Lambda는 다음 호출을 버립니다. 재귀 루프 감지를 비활성화하면 이 지표는 발행되지 않습니다. 이 기능에 대한 자세한 내용은 무한 루프를 방지하기 위해 Lambda 재귀 루프 감지 사용하기를 참고하세요.
배포 지표
배포 지표는 Lambda 함수 배포 이벤트와 관련 검증 프로세스에 대한 정보를 제공합니다.
SignatureValidationErrors— 코드 서명 구성 정책이Warn으로 설정되었을 때 서명 검증 실패와 함께 코드 패키지 배포가 발생한 횟수입니다. 이 지표는 만료, 불일치, 또는 폐기 검사가 실패했지만Warn정책 설정 때문에 배포가 여전히 허용될 때 발행됩니다. 코드 서명에 대한 자세한 내용은 코드 서명으로 Lambda 코드 무결성 검증하기를 참고하세요.
성능 지표
성능 지표는 단일 함수 호출에 대한 성능 세부 정보를 제공합니다. 예를 들어 Duration 지표는 함수가 이벤트를 처리하는 데 소비하는 시간을 밀리초 단위로 나타냅니다. 함수가 이벤트를 처리하는 속도를 파악하려면 이 지표를 Average 또는 Max 통계로 확인하세요.
Duration— 함수 코드가 이벤트를 처리하는 데 소비한 시간. 호출의 청구 지속 시간은Duration값을 가장 가까운 밀리초로 올림한 값입니다.Duration에는 콜드 스타트 시간이 포함되지 않습니다.PostRuntimeExtensionsDuration— 함수 코드가 완료된 후 런타임이 확장 코드를 실행하는 데 소비한 누적 시간.IteratorAge— DynamoDB, Kinesis, Amazon DocumentDB 이벤트 소스의 경우 이벤트의 마지막 레코드 나이(밀리초)입니다. 이 지표는 스트림이 레코드를 받은 시점과 이벤트 소스 매핑이 이벤트를 함수로 보낸 시점 사이의 시간을 측정합니다.OffsetLag— 자체 관리형 Apache Kafka 및 Amazon Managed Streaming for Apache Kafka(Amazon MSK) 이벤트 소스의 경우 토픽에 기록된 마지막 레코드와 함수의 컨슈머 그룹이 처리한 마지막 레코드 사이의 오프셋 차이입니다. Kafka 토픽은 여러 파티션을 가질 수 있지만, 이 지표는 토픽 수준에서 오프셋 지연을 측정합니다.
Duration은 백분위수(p) 통계도 지원합니다. Average와 Maximum 통계를 왜곡하는 이상값을 제외하려면 백분위수를 사용하세요. 예를 들어 p95 통계는 가장 느린 5%를 제외한 호출의 95%에 대한 최대 지속 시간을 보여줍니다. 자세한 내용은 Amazon CloudWatch 사용자 안내서의 백분위수를 참고하세요.
동시성 지표
Lambda는 함수, 버전, 별칭, 또는 AWS 리전에 걸쳐 이벤트를 처리하는 인스턴스 수의 집계 개수로 동시성 지표를 보고합니다. 동시성 한도에 얼마나 가까워졌는지 보려면 이 지표를 Max 통계로 확인하세요.
ConcurrentExecutions— 이벤트를 처리 중인 함수 인스턴스 수. 이 숫자가 리전의 동시 실행 쿼터 또는 함수의 예약 동시성 한도에 도달하면 Lambda는 추가 호출 요청을 스로틀링합니다.ProvisionedConcurrentExecutions— 프로비저닝 동시성을 사용해 이벤트를 처리 중인 함수 인스턴스 수. Lambda는 프로비저닝 동시성이 있는 별칭 또는 버전의 각 호출에 대해 현재 개수를 발행합니다. 함수가 비활성 상태이거나 요청을 받지 않으면 Lambda는 이 지표를 발행하지 않습니다.ProvisionedConcurrencyUtilization— 버전 또는 별칭에 대해ProvisionedConcurrentExecutions값을 구성된 총 프로비저닝 동시성 양으로 나눈 값입니다. 예를 들어 함수에 프로비저닝 동시성을 10으로 구성하고ProvisionedConcurrentExecutions가 7이면ProvisionedConcurrencyUtilization은 0.7입니다. 함수가 비활성 상태이거나 요청을 받지 않으면ProvisionedConcurrencyUtilization은ProvisionedConcurrentExecutions에 기반하므로 Lambda는 이 지표를 발행하지 않습니다. CloudWatch 알람의 기반으로ProvisionedConcurrencyUtilization을 사용한다면 이 점을 명심하세요.UnreservedConcurrentExecutions— 리전에 대해 예약 동시성이 없는 함수가 처리 중인 이벤트 수.ClaimedAccountConcurrency— 리전에 대해 주문형 호출에 사용할 수 없는 동시성 양.ClaimedAccountConcurrency는UnreservedConcurrentExecutions+ 할당된 동시성 양(즉, 총 예약 동시성 + 총 프로비저닝 동시성)과 같습니다. 자세한 내용은 ClaimedAccountConcurrency 지표 사용하기를 참고하세요.
비동기 호출 지표
비동기 호출 지표는 이벤트 소스와 직접 호출의 비동기 호출에 대한 세부 정보를 제공합니다. 특정 변경 사항을 알려주도록 임계값과 알람을 설정할 수 있어요. 예를 들어 처리 대기 중인 이벤트 수가 원치 않게 증가할 때(AsyncEventsReceived), 또는 이벤트가 오랫동안 처리를 기다리고 있을 때(AsyncEventAge)입니다.
AsyncEventsReceived— Lambda가 처리를 위해 성공적으로 큐에 넣은 이벤트 수. 이 지표는 Lambda 함수가 받는 이벤트 수에 대한 통찰을 제공합니다. 문제를 확인하려면 이 지표를 모니터링하고 임계값에 대한 알람을 설정하세요. 예를 들어 Lambda로 전송되는 이벤트 수가 원치 않게 많아지는 것을 감지하고, 잘못된 트리거나 함수 구성으로 인한 문제를 빠르게 진단하기 위해서입니다.AsyncEventsReceived와Invocations의 불일치는 처리 차이, 버려지는 이벤트, 또는 잠재적 큐 백로그를 나타낼 수 있습니다.AsyncEventAge— Lambda가 이벤트를 성공적으로 큐에 넣은 시점과 함수가 호출되는 시점 사이의 시간. 호출 실패나 스로틀링으로 인해 이벤트가 재시도되면 이 지표의 값이 증가합니다. 큐 누적이 발생할 때 다양한 통계의 임계값에 대한 알람을 설정하고 이 지표를 모니터링하세요. 이 지표의 증가를 문제 해결하려면Errors지표에서 함수 오류를,Throttles지표에서 동시성 문제를 확인하세요.AsyncEventsDropped— 함수 실행을 성공적으로 수행하지 않고 버려진 이벤트 수. 데드 레터 큐(DLQ)나OnFailure대상을 구성하면 이벤트는 버려지기 전에 그곳으로 보내집니다. 이벤트가 버려지는 이유는 다양합니다. 예를 들어 이벤트가 최대 이벤트 수명을 초과하거나 최대 재시도 횟수를 소진하거나, 예약 동시성이 0으로 설정될 수 있습니다. 이벤트가 버려지는 이유를 해결하려면Errors지표에서 함수 오류를,Throttles지표에서 동시성 문제를 확인하세요.
이벤트 소스 매핑 지표
이벤트 소스 매핑 지표는 이벤트 소스 매핑의 처리 동작에 대한 통찰을 제공합니다.
현재 이벤트 소스 매핑 지표는 Amazon SQS, Kinesis, DynamoDB, Amazon MSK, 자체 관리형 Apache Kafka 이벤트 소스에서 사용할 수 있습니다.
지표 구성이 있는 이벤트 소스 매핑의 경우, 이제 Console Lambda > Additional resources > event source mappings 페이지의 Monitor 탭에서도 모든 ESM 관련 지표를 확인할 수 있어요.
이벤트 소스 매핑에 지표 활성화하기 (콘솔)
- Lambda 콘솔의 Functions 페이지를 엽니다.
- 지표를 활성화하려는 함수를 선택합니다.
- Configuration(구성)을 선택한 다음 Triggers(트리거)를 선택합니다.
- 지표를 활성화하려는 이벤트 소스 매핑을 선택한 다음 Edit(편집)을 선택합니다.
- Event source mapping configuration(이벤트 소스 매핑 구성) 아래에서 Enable metrics(지표 활성화)를 선택하거나 Metrics 드롭다운 목록에서 선택합니다.
- Save(저장)을 선택합니다.
또는 EventSourceMappingConfiguration의 EventSourceMappingMetricsConfig 객체를 사용해 이벤트 소스 매핑에 대한 지표를 프로그래밍 방식으로 활성화할 수 있어요. 예를 들어 다음 UpdateEventSourceMapping CLI 명령은 이벤트 소스 매핑에 대한 지표를 활성화합니다:
aws lambda update-event-source-mapping \
--uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
--metrics-config Metrics=EventCount
지표 그룹은 3개(EventCount, ErrorCount, KafkaMetrics)이며, 각 그룹에는 여러 지표가 있습니다. 모든 지표가 각 이벤트 소스마다 사용 가능한 것은 아닙니다. 다음 표는 각 이벤트 소스 유형에 대해 지원되는 지표를 요약합니다.
지표를 받으려면 지표 그룹을 옵트인해야 합니다. 예를 들어 metrics config에 EventCount를 설정하면 (PolledEventCount, FilteredOutEventCount, InvokedEventCount, FailedInvokeEventCount, DroppedEventCount, OnFailureDestinationDeliveredEventCount, DeletedEventCount) 지표를 받습니다.
| 지표 | 그룹 | SQS | 스트림 (Kinesis/DynamoDB) | Kafka (MSK/자체 관리형) |
|---|---|---|---|---|
PolledEventCount |
EventCount |
Yes | Yes | Yes |
FilteredOutEventCount |
EventCount |
Yes | Yes | Yes |
InvokedEventCount |
EventCount |
Yes | Yes | Yes |
FailedInvokeEventCount |
EventCount |
Yes | Yes | Yes |
DroppedEventCount |
EventCount |
No | Yes | Yes |
OnFailureDestinationDeliveredEventCount |
EventCount |
No | Yes | Yes |
DeletedEventCount |
EventCount |
Yes | No | No |
CommittedEventCount |
EventCount |
No | No | Yes |
PollingErrorCount |
ErrorCount |
No | No | Yes |
InvokeErrorCount |
ErrorCount |
No | No | Yes |
OnFailureDestinationDeliveryErrorCount |
ErrorCount |
No | No | Yes |
SchemaRegistryErrorCount |
ErrorCount |
No | No | Yes |
CommitErrorCount |
ErrorCount |
No | No | Yes |
MaxOffsetLag |
KafkaMetrics |
No | No | Yes |
SumOffsetLag |
KafkaMetrics |
No | No | Yes |
또한 이벤트 소스 매핑이 프로비저닝 모드라면 Lambda는 다음 지표를 제공합니다:
ProvisionedPollers— 프로비저닝 모드의 이벤트 소스 매핑에서 활발히 실행 중인 이벤트 폴러 수.MAX수학으로 이 지표를 확인하세요.EventPollerUnit— (Amazon MSK 및 자체 관리형 Apache Kafka 이벤트 소스만) 프로비저닝 모드의 이벤트 소스 매핑에서 활발히 실행 중인 이벤트 폴러 유닛 수.SUM수학으로 이 지표를 확인하세요.EventPollerThroughputInBytes— (Amazon MSK 및 자체 관리형 Apache Kafka 이벤트 소스) 프로비저닝 모드의 이벤트 소스 매핑에서 이벤트 소스로부터 폴링된 이벤트 폴러의 총 레코드 크기. 현재 폴링 처리량을 알려줍니다.SUM수학으로 이 지표를 확인하세요.
각 지표에 대한 자세한 내용은 다음과 같습니다:
-
PolledEventCount— Lambda가 이벤트 소스에서 성공적으로 읽은 이벤트 수. Lambda가 이벤트를 폴링했지만 빈 폴링(새 레코드 없음)을 받으면 Lambda는 이 지표에 0 값을 발행합니다. 이 지표를 사용해 이벤트 소스 매핑이 새 이벤트를 올바르게 폴링하는지 감지하세요. -
FilteredOutEventCount— 필터 기준이 있는 이벤트 소스 매핑에서 해당 필터 기준에 의해 걸러진 이벤트 수. 이 지표를 사용해 이벤트 소스 매핑이 이벤트를 제대로 걸러내는지 감지하세요. 필터 기준과 일치하는 이벤트에 대해 Lambda는 0 지표를 발행합니다. -
InvokedEventCount— Lambda 함수를 호출한 이벤트 수. 이 지표를 사용해 이벤트가 함수를 제대로 호출하는지 확인하세요. 이벤트가 함수 오류나 스로틀링을 초래하면 자동 재시도 때문에InvokedEventCount가 같은 폴링된 이벤트에 대해 여러 번 계산될 수 있습니다.경고
Lambda 이벤트 소스 매핑은 각 이벤트를 최소 한 번 처리하며, 레코드의 중복 처리가 발생할 수 있습니다. 이 때문에 이벤트가 포함된 지표에서 이벤트가 여러 번 계산될 수 있습니다.
-
FailedInvokeEventCount— Lambda가 함수를 호출하려고 시도했지만 실패한 이벤트 수. 호출은 네트워크 구성 문제, 잘못된 권한, 또는 삭제된 Lambda 함수·버전·별칭 같은 이유로 실패할 수 있습니다. 이벤트 소스 매핑에 부분 배치 응답이 활성화되어 있으면FailedInvokeEventCount는 응답에 비어 있지 않은BatchItemFailures가 있는 모든 이벤트를 포함합니다.참고
FailedInvokeEventCount지표의 타임스탬프는 함수 호출의 끝을 나타냅니다. 이 동작은 함수 호출 시작에 타임스탬프가 찍히는 다른 Lambda 호출 오류 지표와 다릅니다. -
DroppedEventCount— 만료 또는 재시도 소진으로 인해 Lambda가 버린 이벤트 수. 구체적으로MaximumRecordAgeInSeconds나MaximumRetryAttempts의 구성 값을 초과하는 레코드 수입니다. 중요하게도 여기에는 이벤트 소스의 보존 설정 초과로 만료되는 레코드 수는 포함되지 않습니다. 버려진 이벤트에는 on-failure 대상으로 보내는 이벤트도 제외됩니다. 이 지표를 사용해 증가하는 이벤트 백로그를 감지하세요. -
OnFailureDestinationDeliveredEventCount— on-failure 대상이 구성된 이벤트 소스 매핑에서 대상으로 보내진 이벤트 수. 이 지표를 사용해 이 이벤트 소스의 호출과 관련된 함수 오류를 모니터링하세요. 대상으로 전달이 실패하면 Lambda는 지표를 다음과 같이 처리합니다:OnFailureDestinationDeliveredEventCount지표를 발행하지 않습니다.DestinationDeliveryFailures지표에 대해 1을 발행합니다.DroppedEventCount지표에 대해 전달 실패한 이벤트 수와 같은 값을 발행합니다.
-
DeletedEventCount— Lambda가 처리 후 성공적으로 삭제한 이벤트 수. Lambda가 이벤트 삭제를 시도했지만 실패하면 Lambda는 0 지표를 발행합니다. 이 지표를 사용해 성공적으로 처리된 이벤트가 이벤트 소스에서 삭제되었는지 확인하세요. -
CommittedEventCount— Lambda가 처리 후 성공적으로 커밋한 이벤트 수. Kafka 이벤트 소스 매핑의 각 파티션에서 마지막 커밋된 오프셋과 현재 커밋된 오프셋의 델타 합계입니다. -
PollingErrorCount— Lambda가 이벤트 소스에서 폴링 요청을 가져오지 못한 오류 수. Lambda는 오류가 발생했을 때만 이 지표 데이터를 발행합니다. -
InvokeErrorCount— Lambda가 함수를 호출하지 못한 오류 수. 호출은 배치 단위로 기록된다는 점을 주의하세요. 숫자는 레코드 수 수준이 아니라 배치 수준입니다. Lambda는 오류가 발생했을 때만 이 지표 데이터를 발행합니다. -
SchemaRegistryErrorCount— Lambda가 스키마를 가져오거나 해당 스키마로 역직렬화하지 못한 오류 수. Lambda는 오류가 발생했을 때만 이 지표 데이터를 발행합니다. -
CommitErrorCount— Lambda가 Kafka 클러스터에 커밋하지 못한 오류 수. Lambda는 오류가 발생했을 때만 이 지표 데이터를 발행합니다. -
MaxOffsetLag— 이벤트 소스 매핑의 모든 파티션에 걸친 오프셋 지연의 최대값(최신 오프셋과 커밋된 오프셋의 차이). -
SumOffsetLag— 이벤트 소스 매핑의 모든 파티션에 걸친 오프셋 지연의 합계.
이벤트 소스 매핑이 비활성화되어 있으면 이벤트 소스 매핑 지표를 받을 수 없습니다. CloudWatch나 Lambda가 저하된 가용성을 겪고 있다면 지표가 누락된 것도 볼 수 있습니다.