Lambda 함수 지표 작업 - AWS Lambda

Lambda 함수 지표 작업

AWS Lambda 함수가 이벤트 처리를 마치면 Lambda는 호출에 대한 지표를 Amazon CloudWatch로 전송합니다. 이러한 지표에 대해서는 요금이 부과되지 않습니다.

CloudWatch 콘솔에서 이러한 지표를 사용하여 그래프와 대시보드를 빌드할 수 있습니다. 경보를 설정하여 사용률, 성능 또는 오류율의 변화에 대응할 수 있습니다. Lambda는 1분 간격으로 지표 데이터를 CloudWatch로 보냅니다. Lambda 함수에 대한 보다 즉각적인 인사이트를 위해 Serverless Land의 설명에 따라 고분해능 사용자 지정 지표를 생성할 수 있습니다. 사용자 지정 지표 및 CloudWatch 경보에는 요금이 부과됩니다. 자세한 내용은 Amazon CloudWatch 요금을 참조하세요.

이 페이지에서는 CloudWatch 콘솔에서 사용할 수 있는 Lambda 함수 호출, 성능 및 동시성 지표를 설명합니다.

CloudWatch 콘솔에서 지표 보기

또한, CloudWatch 콘솔을 사용하여 함수 이름, 별칭 또는 버전별로 함수 지표를 필터링하고 정렬할 수 있습니다.

CloudWatch 콘솔에서 지표 보기
  1. CloudWatch 콘솔의 지표 페이지(AWS/Lambda 네임스페이스)를 엽니다.

  2. 찾아보기 탭의 지표에서 다음 차원 중 하나를 선택합니다.

    • 함수 이름별(FunctionName) – 함수의 모든 버전 및 별칭에 대한 집계 지표를 봅니다.

    • 리소스별(Resource) – 함수의 버전 또는 별칭에 대한 지표를 봅니다.

    • 실행된 버전별(ExecutedVersion) – 별칭과 버전의 조합에 대한 지표를 봅니다. ExecutedVersion 차원을 사용하여 가중치 기반 별칭의 두 대상인 함수의 두 버전에 대한 오류율을 비교합니다.

    • Across All Functions(전체 함수)(없음) – 현재 AWS 리전의 모든 함수에 대한 집계 지표를 봅니다.

  3. 지표를 선택한 다음 A그래프에 추가 또는 다른 그래프 옵션을 선택합니다.

기본적으로 그래프는 모든 지표에 대해 Sum 통계를 사용합니다. 다른 통계를 선택하고 그래프를 사용자 지정하려면 그래프로 표시된 지표 탭의 옵션을 사용합니다.

참고

지표의 타임스탬프는 함수가 호출된 시기를 반영합니다. 호출 기간에 따라 지표를 내보내기까지 몇 분이 걸릴 수 있습니다. 예를 들어, 함수에 10분의 제한 시간이 있는 경우 정확한 지표를 위해 이전의 10분 이상을 살펴봅니다.

CloudWatch에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서를 참조하세요.

지표의 유형

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

호출 지표

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

참고

Sum 통계로 다음 호출 지표를 확인합니다.

  • 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가 함수 간접 호출을 중단한 횟수입니다. Lambda 재귀 루프 감지를 사용하여 무한 루프 방지는 지원되는 AWS SDK에서 추가한 메타데이터를 추적하여 요청 체인의 일부로 함수가 간접적으로 호출되는 횟수를 모니터링합니다. 함수가 요청 체인의 일부로 16회 넘게 간접적으로 호출되면 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는 현재 개수를 내보냅니다.

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

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

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

비동기 호출 지표

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

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

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

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