Amazon CloudWatch Lambda Insights로 함수 성능 모니터링 - AWS Lambda

Amazon CloudWatch Lambda Insights로 함수 성능 모니터링

Amazon CloudWatch Lambda Insights는 서버리스 애플리케이션에 대한 Lambda 함수 런타임 성능 지표 및 로그를 수집하고 집계합니다. 이 페이지에서는 Lambda Insights를 활성화하고 이를 사용하여 Lambda 함수 문제를 진단하는 방법을 설명합니다.

Lambda Insights에서 서버리스 애플리케이션을 모니터링하는 방식

CloudWatch Lambda Insights는 AWS Lambda에서 실행되는 서버리스 애플리케이션에 대한 모니터링 및 문제 해결 솔루션입니다. 이 솔루션은 CPU 시간, 메모리, 디스크 및 네트워크 사용량을 포함한 시스템 수준 지표를 수집, 집계 및 요약합니다. 또한 콜드 스타트 및 Lambda 작업자 종료와 같은 진단 정보를 수집, 집계 및 요약하여 Lambda 함수 관련 문제를 격리하고 신속하게 해결할 수 있도록 지원합니다.

Lambda Insights는 Lambda 계츠으로 제공되는 새로운 CloudWatch Lambda Insights 익스텐션을 사용합니다. Lambda 함수에서 지원되는 런타임에 대해 이 익스텐션을 활성화하면 시스템 수준 지표를 수집하고 Lambda 함수를 호출할 때마다 단일 성능 로그 이벤트를 내보냅니다. CloudWatch는 포함된 지표 서식을 사용하여 로그 이벤트에서 지표를 추출합니다. 자세한 내용은 AWS Lambda 익스텐션 사용을 참조하세요.

Lambda Insights 계층은 /aws/lambda-insights/ 로그 그룹에 대해 CreateLogStreamPutLogEvents를 확장합니다.

요금

Lambda 함수에 대해 Lambda Insights를 활성화하면 Lambda Insights는 함수당 8개의 지표를 보고하고 모든 함수 호출은 약 1KB 정도의 로그 데이터를 CloudWatch로 전송합니다. Lambda Insights가 함수에 대해 보고한 지표 및 로그에 대해서만 비용을 지불하면 됩니다. 최소 요금이나 필수 서비스 사용 정책은 없습니다. 함수가 호출되지 않은 경우 Lambda Insights에 대한 비용을 지불하지 않습니다. 요금의 예시는 Amazon CloudWatch 요금을 참조하세요.

지원되는 런타임

Lambda 익스텐션을 지원하는 모든 런타임에 Lambda Insights를 사용할 수 있습니다.

Lambda 콘솔에서 Lambda Insights 사용

신규 및 기존 Lambda 함수에 대한 Lambda Insights 확장 모니터링을 활성화할 수 있습니다. 지원되는 런타임에 대해 Lambda 콘솔의 함수에서 Lambda Insights를 활성화하면 Lambda는 Lambda Insights 익스텐션을 함수에 계층으로 추가하고 해당 CloudWatchLambdaInsightsExecutionRolePolicy 정책을 함수의 실행 역할에 연결합니다.

Lambda 콘솔에서 Lambda Insights를 사용하려면
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. 구성 탭을 선택합니다.

  4. 왼쪽 메뉴에서 모니터링 및 작업 도구를 선택합니다.

  5. 추가 모니터링 도구 창에서 편집을 선택합니다.

  6. CloudWatch Lambda Insights에서 확장 모니터링을 켭니다.

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

프로그래밍 방식으로 Lambda Insights 활성화

AWS Command Line Interface(AWS CLI), AWS Serverless Application Model(SAM) CLI, AWS CloudFormation 또는 AWS Cloud Development Kit (AWS CDK)를 사용해 Lambda Insights를 활성화할 수도 있습니다. 지원되는 런타임에 대한 함수에서 프로그래밍 방식으로 Lambda Insights를 활성화하면 CloudWatch는 CloudWatchLambdaInsightsExecutionRolePolicy 정책을 함수의 실행 역할에 연결합니다.

자세한 내용은 Amazon CloudWatch 사용 설명서Lambda Insights 시작하기를 참조하세요.

Lambda 인사이트 대시보드 사용

CloudWatch 콘솔의 Lambda Insights 대시보드에는 다중 함수 개요와 단일 함수 보기의 두 가지 보기가 있습니다. 다중 함수 개요에는 현재 AWS 계정 및 리전의 Lambda 함수에 대한 런타임 지표가 집계됩니다. 단일 함수 보기에는 단일 Lambda 함수에 대해 사용 가능한 런타임 지표가 표시됩니다.

CloudWatch 콘솔에서 Lambda Insights 대시보드 다중 함수 개요를 사용하여 사용률이 높거나 낮은 Lambda 함수를 식별할 수 있습니다. CloudWatch 콘솔에서 Lambda Insights 대시보드 단일 함수 보기를 사용하여 개별 요청 문제를 해결할 수 있습니다.

모든 함수에 대한 런타임 지표를 보려면
  1. CloudWatch 콘솔에서 다중 함수 페이지를 엽니다.

  2. 미리 정의된 시간 범위 중에서 선택하거나 사용자 지정 시간 범위를 선택합니다.

  3. (선택 사항) 대시보드에 추가를 선택하여 CloudWatch 대시보드에 위젯을 추가합니다.

    Lambda Insights 대시보드의 다중 함수 개요입니다.
단일 함수의 런타임 지표를 보려면
  1. CloudWatch 콘솔에서 단일 함수 페이지를 엽니다.

  2. 미리 정의된 시간 범위 중에서 선택하거나 사용자 지정 시간 범위를 선택합니다.

  3. (선택 사항) 대시보드에 추가를 선택하여 CloudWatch 대시보드에 위젯을 추가합니다.

    Lambda Insights 대시보드의 단일 함수 보기입니다.

자세한 내용은 CloudWatch 대시보드에서 위젯 생성 및 사용을 참조하세요.

함수 이상을 탐지하는 예제 워크플로

Lambda Insights 대시보드의 다중 함수 개요를 사용하여 함수에 대한 컴퓨팅 메모리 이상을 식별하고 탐지할 수 있습니다. 예를 들어 다중 함수 개요에서 함수가 많은 양의 메모리를 사용하고 있는 것으로 나타날 경우 메모리 사용량(Memory Usage) 창에서 자세한 메모리 사용률 지표를 볼 수 있습니다. 그런 다음 지표 대시보드로 이동하여 이상 탐지를 활성화하거나 경보를 생성할 수 있습니다.

함수에 대한 이상 탐지를 활성화하려면
  1. CloudWatch 콘솔에서 다중 함수 페이지를 엽니다.

  2. 함수 요약(Function summary)에서 함수 이름을 선택합니다.

    함수 런타임 지표가 표시된 단일 함수 보기가 열립니다.

    Lambda Insights 대시보드의 함수 요약 창입니다.
  3. 메모리 사용량(Memory Usage) 창에서 세로 점 3개 모양의 아이콘을 선택한 다음 지표에서 보기(View in metrics)를 선택하여 지표(Metrics) 대시보드를 엽니다.

    메모리 사용량 창의 메뉴입니다.
  4. 그래프로 표시된 지표(Graphed metrics) 탭의 작업(Actions) 열에서 첫 번째 아이콘을 선택하여 함수에 대한 이상 탐지를 활성화합니다.

    메모리 사용량 창의 그래프로 표시된 지표 탭입니다.

자세한 내용은 CloudWatch 이상 탐지 사용을 참조하세요.

쿼리를 사용하여 함수 문제를 해결하는 예제 워크플로

Lambda Insights 대시보드의 단일 함수 보기를 사용하여 함수 기간 스파이크의 근본 원인을 식별할 수 있습니다. 예를 들어, 다중 함수 개요에 함수 기간이 크게 증가한 것으로 나타날 경우 기간(Duration) 창에서 각 함수를 일시 중지하거나 선택하여 이러한 증가를 일으킨 함수를 확인할 수 있습니다. 그런 다음 단일 함수 보기로 이동하여 애플리케이션 로그(Application logs)를 검토해 근본 원인을 파악할 수 있습니다.

함수에 대한 쿼리를 실행하려면
  1. CloudWatch 콘솔에서 다중 함수 페이지를 엽니다.

  2. 기간(Duration) 창에서 기간 지표를 필터링할 함수를 선택합니다.

    기간 창에서 선택한 함수입니다.
  3. 단일 함수 페이지를 엽니다.

  4. 함수 이름으로 지표 필터링(Filter metrics by function name) 드롭다운 목록을 선택한 다음 함수를 선택합니다.

  5. 최근 1000개의 애플리케이션 로그(Most recent 1000 application logs)를 보려면 애플리케이션 로그(Application logs) 탭을 선택합니다.

  6. 타임스탬프(Timestamp)메시지(Message)를 검토하여 문제를 해결할 호출 요청을 식별합니다.

    최근 1,000개의 애플리케이션 로그입니다.
  7. 최근 1000개의 호출(Most recent 1000 invocations)을 표시하려면 호출(Invocations) 탭을 선택합니다.

  8. 문제를 해결하려는 호출 요청에 대한 타임스탬프(Timestamp) 또는 메시지(Message)를 선택합니다.

    최근 호출 요청 선택.
  9. 로그 보기(View logs) 드롭다운 목록을 선택한 다음 성능 로그 보기(View performance logs)를 선택합니다.

    함수에 대한 자동 생성된 쿼리가 Logs Insights 대시보드에서 열립니다.

  10. 쿼리 실행(Run query)을 선택하여 호출 요청에 대한 로그(Logs) 메시지를 생성합니다.

    Logs Insights 대시보드에서 선택한 함수 쿼리.

다음 단계