Lambda 함수에 대한 지표 유형 - AWS Lambda

Lambda 함수에 대한 지표 유형

이 섹션에서는 CloudWatch 콘솔에서 사용할 수 있는 Lambda 지표의 유형을 설명합니다.

호출 지표

호출 지표는 Lambda 함수 호출 결과의 이진 표시기입니다. Sum 통계와 함께 이 지표를 확인합니다. 예를 들어, 함수가 오류를 반환하면 Lambda에서 값이 1인 Errors 지표를 보냅니다. 1분마다 발생한 함수 오류의 수를 확인하려면 1분의 기간에 대한 Sum 지표의 Errors를 확인합니다.

  • Invocations – 성공적인 간접 호출 및 함수 오류를 유발하는 간접 호출을 포함하여 함수 코드가 간접 호출된 횟수입니다. 호출 요청이 제한되거나 다른 방식으로 호출 오류가 발생하는 경우 호출이 기록되지 않습니다. Invocations의 값은 요금이 청구된 요청 수와 동일합니다.

  • Errors – 함수 오류가 발생하는 호출 수. 함수 오류에는 코드에서 발생하는 예외와 Lambda 런타임에서 발생하는 예외가 포함됩니다. 런타임은 시간 초과 및 구성 오류와 같은 문제에 대한 오류를 반환합니다. 오류율을 계산하려면 Errors의 값을 Invocations의 값으로 나눕니다. 오류 지표의 타임스탬프는 오류가 발생한 시기가 아니라 함수가 간접 호출된 시기를 반영합니다.

  • DeadLetterErrors비동기 호출의 경우 Lambda에서 배달 못한 편지 대기열(DLQ)에 이벤트를 보내려고 시도하지만 실패하는 횟수입니다. 배달 못한 편지 오류는 잘못 설정된 리소스 또는 크기 제한으로 인해 발생할 수 있습니다.

  • DestinationDeliveryFailures – 비동기 호출과 지원되는 이벤트 소스 매핑의 경우 Lambda에서 대상에 이벤트를 보내려고 시도하지만 실패하는 횟수입니다. 이벤트 소스 매핑의 경우 Lambda는 스트림 소스(DynamoDB 및 Kinesis)에 대한 대상을 지원합니다. 전송 오류는 권한 오류, 잘못 설정된 리소스 또는 크기 제한으로 인해 발생할 수 있습니다. 오류는 또한 구성한 대상이 Amazon SQS FIFO 대기열 또는 Amazon SNS FIFO 주제와 같이 지원되지 않는 유형인 경우 발생할 수 있습니다.

  • Throttles – 제한된 호출 요청 수. 모든 함수 인스턴스가 요청을 처리 중이고 확장할 수 있는 동시성이 없는 경우 Lambda는 TooManyRequestsException 오류를 통해 추가 요청을 거부합니다. 제한된 요청 및 기타 호출 오류는 Invocations 또는 Errors로 간주되지 않습니다.

  • OversizedRecordCount - Amazon DocumentDB 이벤트 소스의 경우 함수가 변경 스트림으로부터 수신하는 이벤트 중 크기가 6MB를 초과하는 이벤트의 수입니다. Lambda는 메시지를 삭제하고 이 지표를 내보냅니다.

  • ProvisionedConcurrencyInvocations프로비저닝된 동시성을 사용하여 함수 코드가 간접 호출되는 횟수입니다.

  • ProvisionedConcurrencySpilloverInvocations – 모든 프로비저닝된 동시성을 사용 중인 경우, 표준 동시성을 사용하여 함수 코드가 간접 호출되는 횟수입니다.

  • RecursiveInvocationsDropped - 함수가 무한 재귀 루프의 일부인 것으로 감지되어 Lambda가 함수의 간접 호출을 중단한 횟수입니다. 재귀 루프 감지는 지원되는 AWS SDK에서 추가한 메타데이터를 추적하여 함수가 요청 체인의 일부로 간접 호출되는 횟수를 모니터링합니다. 기본적으로 함수가 요청 체인의 일부로 약 16회 간접적으로 간접 호출되면 Lambda는 다음 간접 호출을 삭제합니다. 재귀 루프 감지를 비활성화하면 이 지표가 생성되지 않습니다. 이 기능에 대한 자세한 내용은 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)도 지원합니다. AverageMaximum 통계를 왜곡하는 특이값을 제외하려면 백분위수를 사용합니다. 예를 들어, p95 통계는 가장 느린 5%를 제외하고 호출의 최대 지속 시간 95%를 보여줍니다. 자세한 내용은 Amazon CloudWatch 사용 설명서의 백분위수를 참조하세요.

동시성 지표

Lambda는 동시성 지표를 함수, 버전, 별칭 또는 AWS 리전에서 이벤트를 처리하는 인스턴스 수의 집계로 보고합니다. 동시성 제한에 얼마나 근접했는지 확인하려면 Max 통계와 함께 이러한 지표를 살펴봅니다.

  • ConcurrentExecutions – 이벤트를 처리 중인 함수 인스턴스의 개수. 이 수가 리전의 동시 실행 할당량 또는 함수에 대해 구성한 예약된 동시성 제한에 도달하면 Lambda가 추가 호출 요청을 제한합니다.

  • ProvisionedConcurrentExecutions프로비저닝된 동시성을 사용하여 이벤트를 처리 중인 함수 인스턴스의 개수. 프로비저닝된 동시성이 있는 별칭 또는 버전을 호출할 때마다 Lambda는 현재 개수를 내보냅니다. 함수가 비활성 상태이거나 요청을 수신하지 않는 경우 Lambda는 이 지표를 내보내지 않습니다.

  • ProvisionedConcurrencyUtilization - 버전 또는 별칭의 경우 ProvisionedConcurrentExecutions의 값을 구성된 총 프로비저닝된 동시성의 양으로 나눈 값입니다. 예를 들어 함수에 대해 프로비저닝된 동시성을 10으로 구성하고 ProvisionedConcurrentExecutions가 7인 경우 ProvisionedConcurrencyUtilization은 0.7이 됩니다.

    함수가 비활성 상태이거나 요청을 수신하지 않는 경우 Lambda는 ProvisionedConcurrentExecutions를 기반으로 하므로 이 지표를 내보내지 않습니다. ProvisionedConcurrencyUtilization을 CloudWatch 경보의 기반으로 사용하는 경우 이 점을 염두에 두세요.

  • UnreservedConcurrentExecutions – 리전의 경우 예약된 동시성이 없는 함수에서 처리 중인 이벤트의 수입니다.

  • ClaimedAccountConcurrency - 리전에서 온디맨드 간접 호출에 사용할 수 없는 동시 실행 수입니다. ClaimedAccountConcurrencyUnreservedConcurrentExecutions에 할당된 동시성 크기를 더한 값과 같습니다(즉, 예약된 총 동시성과 프로비저닝된 총 동시성 합계). 자세한 내용은 ClaimedAccountConcurrency 지표 작업 단원을 참조하십시오.

비동기 호출 지표

비동기 호출 지표는 이벤트 소스의 비동기 호출 및 직접 호출에 대한 세부 정보를 제공합니다. 임계값 및 경보를 설정하여 특정 변경 사항을 알릴 수 있습니다. 예를 들어, 처리를 위해 대기열에 있는 이벤트 수가 원치 않게 증가한 경우가 있습니다(AsyncEventsReceived). 또는 이벤트가 처리를 위해 장시간 동안 대기하고 있는 경우가 있습니다(AsyncEventAge).

  • AsyncEventsReceived - Lambda가 처리를 위해 성공적으로 대기열에 추가한 이벤트 수. 이 지표는 Lambda 함수가 수신하는 이벤트 수에 대한 통찰력을 제공합니다. 이 지표를 모니터링하고 임계값에 대한 경보를 설정하여 문제를 확인합니다. 예를 들어, Lambda로 전송된 원치 않는 수의 이벤트를 감지하고, 잘못된 트리거 또는 함수 구성으로 인한 문제를 신속하게 진단합니다. AsyncEventsReceivedInvocations 사이의 불일치는 처리 불일치, 이벤트 삭제 또는 잠재적인 대기열 백로그를 의미할 수 있습니다.

  • AsyncEventAge - Lambda가 이벤트를 성공적으로 대기열에 추가한 시점과 함수가 간접 호출되는 시점 사이의 시간. 호출 실패 또는 병목 현상으로 인해 이벤트가 재시도될 때 이 지표의 값이 증가합니다. 이 지표를 모니터링하고 대기열 축적이 발생할 때 다양한 통계에 대한 임계값 관련 경보를 설정합니다. 이 지표의 증가 문제를 해결하려면 Errors 지표를 살펴보고 함수 오류를 식별한 다음 Throttles 지표를 살펴보고 동시성 문제를 식별합니다.

  • AsyncEventsDropped - 함수를 성공적으로 실행하지 않고 삭제된 이벤트 수. DLQ(Dead Letter Queue) 또는 OnFailure 대상을 구성하는 경우 이벤트가 삭제되기 전에 해당 위치로 전송됩니다. 이벤트는 다양한 원인으로 삭제됩니다. 예를 들어, 이벤트가 최대 이벤트 기간을 초과하거나 최대 재시도 횟수를 소진하거나 예약된 동시성이 0으로 설정될 수 있습니다. 이벤트가 삭제되는 이유를 해결하려면 Errors 지표를 살펴보고 함수 오류를 식별한 다음 Throttles 지표를 살펴보고 동시성 문제를 식별합니다.

이벤트 소스 매핑 지표

이벤트 소스 매핑 지표에서는 이벤트 소스 매핑의 처리 동작에 대한 인사이트를 제공합니다. 이러한 지표는 이벤트 소스 매핑이 성공적으로 처리, 필터링 또는 삭제된 이벤트를 포함하여 이벤트의 흐름 및 상태를 모니터링하는 데 도움이 됩니다.

개수와 관련된 지표(PolledEventCount, FilteredOutEventCount, InvokedEventCount, FailedInvokeEventCount, DroppedEventCount, OnFailureDestinationDeliveredEventCount, DeletedEventCount)를 수신하려면 옵트인해야 합니다. 옵트인하기 위해 콘솔 또는 Lambda API를 사용할 수 있습니다.

지표 또는 이벤트 소스 매핑을 활성화하는 방법(콘솔)
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 지표를 활성화할 함수를 선택하세요.

  3. 구성을 선택한 다음 트리거를 선택합니다.

  4. 지표를 활성화할 이벤트 소스 매핑을 선택하고 편집을 선택하세요.

  5. 이벤트 소스 매핑 구성에서 지표 활성화를 선택하세요.

  6. Save(저장)를 선택합니다.

또는 EventSourceMappingConfiguration에서 EventSourceMappingMetricsConfig 객체를 사용하여 프로그래밍 방식으로 이벤트 소스 매핑에 대한 지표를 활성화할 수 있습니다. 예를 들어 다음 UpdateEventSourceMapping CLI 명령은 이벤트 소스 매핑에 대한 지표를 활성화합니다.

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --metrics-config Metrics=EventCount

Sum 통계를 사용하여 이벤트 수와 관련된 지표를 봅니다.

주의

Lambda 이벤트 소스 매핑은 각 이벤트를 한 번 이상 처리하므로 레코드가 중복될 수 있습니다. 이로 인해 이벤트 수와 관련된 지표에서 이벤트 수가 여러 번 계산될 수 있습니다.

  • PolledEventCount - Lambda가 이벤트 소스에서 성공적으로 읽은 이벤트 수. Lambda가 이벤트에 대해 폴링하지만 빈 폴링(새 레코드 없음)을 수신하는 경우 Lambda는 이 지표에 대해 0의 값을 생성합니다. 이 지표를 사용하여 이벤트 소스 매핑이 새 이벤트에 대해 올바르게 폴링되는지 여부를 감지합니다.

  • FilteredOutEventCount - 필터 기준을 사용하는 이벤트 소스 매핑의 경우 해당 필터 기준으로 필터링된 이벤트 수. 이 지표를 사용하여 이벤트 소스 매핑이 이벤트를 올바르게 필터링하는지 여부를 감지합니다. 필터 기준과 일치하는 이벤트의 경우 Lambda는 0의 지표를 생성합니다.

  • InvokedEventCount - Lambda 함수를 간접 호출한 이벤트 수. 이 지표를 사용하여 이벤트가 함수를 올바르게 간접 호출하는지 확인합니다. 이벤트로 인해 함수 오류 또는 스로틀링이 발생하는 경우 InvokedEventCount에서 자동 재시도로 인해 동일한 폴링된 이벤트에 대해 여러 번 계산할 수 있습니다.

  • FailedInvokeEventCount - Lambda가 함수를 간접 호출하려고 했지만 실패한 이벤트 수. 네트워크 구성 문제, 잘못된 권한 또는 삭제된 Lambda 함수, 버전 또는 별칭과 같은 이유로 간접 호출이 실패할 수 있습니다. 이벤트 소스 매핑에서 부분 배치 응답이 활성화된 경우 FailedInvokeEventCount의 응답에는 BatchItemFailures가 비어 있지 않은 모든 이벤트가 포함됩니다.

    참고

    FailedInvokeEventCount 지표의 타임스탬프는 함수 간접 호출의 끝을 나타냅니다. 이 동작은 함수 간접 호출 시작 시 타임스탬프가 지정된 다른 Lambda 간접 호출 오류 지표와 다릅니다.

  • DroppedEventCount - 만료 또는 재시도 횟수 소진으로 인해 Lambda에서 삭제한 이벤트 수. 특히, MaximumRecordAgeInSeconds 또는 MaximumRetryAttempts에 대해 구성된 값을 초과하는 레코드 수입니다. 이때 이벤트 소스의 유지 설정을 초과했기 때문에 만료되는 레코드 수는 포함되지 않습니다. 삭제된 이벤트는 장애 시 대상으로 전송하는 이벤트도 제외합니다. 이 지표를 사용하여 이벤트의 증가하는 백로그를 감지합니다.

  • OnFailureDestinationDeliveredEventCount - 장애 시 대상이 구성된 이벤트 소스 매핑의 경우 해당 대상으로 전송된 이벤트 수. 이 지표를 사용하여 이 이벤트 소스에서 간접 호출과 관련된 함수 오류를 모니터링합니다. 대상으로의 전송이 실패하면 Lambda에서 다음과 같이 지표를 처리합니다.

    • Lambda는 OnFailureDestinationDeliveredEventCount 지표를 생성하지 않습니다.

    • DestinationDeliveryFailures 지표의 경우 Lambda는 1을 생성합니다.

    • DroppedEventCount 지표의 경우 Lambda는 전송에 실패한 이벤트 수와 동일한 수를 생성합니다.

  • DeletedEventCount - Lambda가 처리를 위해 성공적으로 삭제한 이벤트 수. Lambda에서 이벤트를 삭제하려고 하지만 실패하면 Lambda는 0의 지표를 생성합니다. 이 지표를 사용하여 성공적으로 처리된 이벤트가 이벤트 소스에서 삭제되었는지 확인합니다.

이벤트 소스 매핑이 비활성화된 경우 이벤트 소스 매핑 지표를 수신하지 못합니다. 또한 CloudWatch 또는 Lambda에서 가용성이 저하된 경우 누락된 지표가 표시될 수도 있습니다.

각 이벤트 소스에 대해 모든 이벤트 소스 매핑 지표를 사용할 수 있는 것은 아닙니다. 현재 Amazon SQS, Kinesis 및 DynamoDB 스트림 이벤트 소스에 대해 이벤트 소스 매핑 지표를 사용할 수 있습니다. 다음 가용성 매트릭스에는 각 이벤트 소스 유형에 대해 지원되는 지표가 요약되어 있습니다.

이벤트 소스 매핑 지표 Amazon SQS에 대한 지원 Kinesis 및 DynamoDB 스트림에 대한 지원

PolledEventCount

FilteredOutEventCount

InvokedEventCount

FailedInvokeEventCount

DroppedEventCount

아니요

OnFailureDestinationDeliveredEventCount

아니요

DeletedEventCount

아니요

또한 이벤트 소스 매핑이 프로비저닝된 모드인 경우 Lambda는 다음 지표를 제공합니다.

  • ProvisionedPollers - 프로비저닝된 모드에서 이벤트 소스 매핑의 경우 활발하게 실행 중인 이벤트 폴러 수. MAX 지표를 사용하여 이 지표를 봅니다.