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

Amazon CloudWatch Lambda Insights로 함수 성능 모니터링 (Monitor function performance with Amazon CloudWatch Lambda Insights)

Amazon CloudWatch Lambda Insights는 서버리스 애플리케이션의 Lambda 함수 런타임 성능 메트릭과 로그를 수집하고 집계합니다. 이 페이지는 Lambda Insights를 활성화하고 사용해 Lambda 함수의 문제를 진단하는 방법을 설명합니다.

출처: AWS Lambda 개발자 안내서

본문

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

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

Lambda Insights는 Lambda 레이어로 제공되는 새로운 CloudWatch Lambda Insights 확장 기능을 사용합니다. 지원되는 런타임의 Lambda 함수에서 이 확장 기능을 활성화하면 시스템 수준 메트릭을 수집하고 해당 Lambda 함수의 모든 호출에 대해 단일 성능 로그 이벤트를 내보냅니다. CloudWatch는 임베디드 메트릭 형식(EMF)을 사용해 로그 이벤트에서 메트릭을 추출합니다. 자세한 내용은 AWS Lambda 확장 기능 사용을 참조하세요.

Lambda Insights 레이어는 /aws/lambda-insights/ 로그 그룹에 대한 CreateLogStream과 PutLogEvents를 확장합니다.

요금

Lambda 함수에 Lambda Insights를 활성화하면 Lambda Insights는 함수당 8개의 메트릭을 보고하고 모든 함수 호출은 약 1KB의 로그 데이터를 CloudWatch로 보냅니다. Lambda Insights가 함수에 대해 보고하는 메트릭과 로그에 대해서만 비용을 지불합니다. 최소 요금이나 의무 서비스 사용 정책은 없습니다. 함수가 호출되지 않으면 Lambda Insights에 비용을 지불하지 않습니다. 요금 예시는 Amazon CloudWatch 요금을 참조하세요.

지원되는 런타임

Lambda 확장 기능을 지원하는 모든 런타임에서 Lambda Insights를 사용할 수 있습니다.

Lambda 콘솔에서 Lambda Insights 활성화

새 Lambda 함수와 기존 Lambda 함수에서 Lambda Insights 향상된 모니터링을 활성화할 수 있습니다. 지원되는 런타임에 대해 Lambda 콘솔에서 함수에 Lambda Insights를 활성화하면 Lambda는 Lambda Insights 확장 기능을 함수에 레이어로 추가하고 함수의 실행 역할에 CloudWatchLambdaInsightsExecutionRolePolicy 정책을 검증하거나 연결하고 시도합니다.

Lambda 콘솔에서 Lambda Insights를 활성화하려면:

  1. Lambda 콘솔의 Functions(함수) 페이지를 엽니다.
  2. 함수를 선택합니다.
  3. Configuration(구성) 탭을 선택합니다.
  4. 왼쪽 메뉴에서 Monitoring and operations tools(모니터링 및 운영 도구) 를 선택합니다.
  5. Additional monitoring tools(추가 모니터링 도구) 창에서 Edit(편집) 을 선택합니다.
  6. CloudWatch Lambda Insights 아래에서 Enhanced monitoring(향상된 모니터링) 을 켭니다.
  7. Save(저장) 를 선택합니다.

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

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

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

Lambda Insights 대시보드 사용

Lambda Insights 대시보드는 CloudWatch 콘솔에서 두 가지 뷰를 제공합니다: 다중 함수 개요(multi-function overview)와 단일 함수 뷰(single-function view). 다중 함수 개요는 현재 AWS 계정과 리전의 Lambda 함수에 대한 런타임 메트릭을 집계합니다. 단일 함수 뷰는 단일 Lambda 함수의 사용 가능한 런타임 메트릭을 보여줍니다.

CloudWatch 콘솔의 Lambda Insights 대시보드 다중 함수 개요를 사용해 과도하게 또는 과소 사용되는 Lambda 함수를 식별할 수 있습니다. CloudWatch 콘솔의 Lambda Insights 대시보드 단일 함수 뷰를 사용해 개별 요청을 문제 해결할 수 있습니다.

모든 함수의 런타임 메트릭 보기:

  1. CloudWatch 콘솔에서 Multi-function(다중 함수) 페이지를 엽니다.
  2. 미리 정의된 시간 범위 또는 사용자 지정 시간 범위를 선택합니다.
  3. (선택 사항) Add to dashboard(대시보드에 추가) 를 선택해 위젯을 CloudWatch 대시보드에 추가합니다.

단일 함수의 런타임 메트릭 보기:

  1. CloudWatch 콘솔에서 Single-function(단일 함수) 페이지를 엽니다.
  2. 미리 정의된 시간 범위 또는 사용자 지정 시간 범위를 선택합니다.
  3. (선택 사항) Add to dashboard 를 선택해 위젯을 CloudWatch 대시보드에 추가합니다.

자세한 내용은 CloudWatch 대시보드에서 위젯 만들기 및 작업을 참조하세요.

함수 이상 감지 예제 워크플로

Lambda Insights 대시보드의 다중 함수 개요를 사용해 함수의 컴퓨팅 메모리 이상을 식별하고 감지할 수 있습니다. 예를 들어 다중 함수 개요가 함수가 많은 양의 메모리를 사용하고 있음을 나타내면 Memory Usage(메모리 사용량) 창에서 상세 메모리 사용률 메트릭을 볼 수 있습니다. 그런 다음 Metrics 대시보드로 이동해 이상 감지를 활성화하거나 알람을 만들 수 있습니다.

함수에 대한 이상 감지 활성화:

  1. CloudWatch 콘솔에서 Multi-function 페이지를 엽니다.
  2. Function summary(함수 요약) 아래에서 함수의 이름을 선택합니다.
  3. 함수 런타임 메트릭과 함께 단일 함수 뷰가 열립니다.
  4. Memory Usage 창에서 세로 점 3개를 선택한 다음 View in metrics(메트릭에서 보기) 를 선택해 Metrics 대시보드를 엽니다.
  5. Graphed metrics(그래프 메트릭) 탭의 Actions(작업) 열에서 첫 번째 아이콘을 선택해 함수에 대한 이상 감지를 활성화합니다.

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

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

Lambda Insights 대시보드의 단일 함수 뷰를 사용해 함수 기간 급증의 근본 원인을 식별할 수 있습니다. 예를 들어 다중 함수 개요가 함수 기간의 큰 증가를 나타내면 Duration(기간) 창에서 각 함수를 일시 중지하거나 선택해 어떤 함수가 증가를 일으키는지 확인할 수 있습니다. 그런 다음 단일 함수 뷰로 이동해 Application logs(애플리케이션 로그) 를 검토해 근본 원인을 파악할 수 있습니다.

함수에 대한 쿼리 실행:

  1. CloudWatch 콘솔에서 Multi-function 페이지를 엽니다.
  2. Duration 창에서 함수를 선택해 기간 메트릭을 필터링합니다.
  3. Single-function 페이지를 엽니다.
  4. Filter metrics by function name(함수 이름으로 메트릭 필터) 드롭다운 목록을 선택한 다음 함수를 선택합니다.
  5. Most recent 1000 application logs(가장 최근 1000개 애플리케이션 로그) 를 보려면 Application logs 탭을 선택합니다.
  6. 문제를 해결하려는 호출 요청을 식별하려면 Timestamp(타임스탬프) 와 Message(메시지) 를 검토합니다.
  7. Most recent 1000 invocations(가장 최근 1000개 호출) 를 표시하려면 Invocations(호출) 탭을 선택합니다.
  8. 문제를 해결하려는 호출 요청의 Timestamp 또는 Message 를 선택합니다.
  9. View logs(로그 보기) 드롭다운 목록을 선택한 다음 View performance logs(성능 로그 보기) 를 선택합니다.
  10. 함수에 대한 자동 생성 쿼리가 Logs Insights 대시보드에서 열립니다.
  11. Run query(쿼리 실행) 를 선택해 호출 요청에 대한 Logs 메시지를 생성합니다.

다음 단계

  • Amazon CloudWatch 사용 안내서의 Create a Dashboard에서 CloudWatch Logs 대시보드 만드는 방법 알아보기
  • Amazon CloudWatch 사용 안내서의 Add Query to Dashboard or Export Query Results에서 CloudWatch Logs 대시보드에 쿼리를 추가하는 방법 알아보기

더 알아보기 (Learn more)

  • Lambda 모니터링 개요
  • CloudWatch Lambda Insights
  • Lambda 확장 기능