에 대한 로깅 및 지표AWS Lambda - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에 대한 로깅 및 지표AWS Lambda

람다워크로드에 맞게 서버를 관리하고 모니터링할 필요가 없으며 다음과 같이 자동으로 작동합니다. CloudWatch지표 및 CloudWatch 애플리케이션 코드의 추가 구성 또는 계측 없이 로깅할 수 있습니다. 이 섹션에서는 Lambda에서 사용하는 시스템의 성능 특성과 구성 선택이 성능에 미치는 영향을 이해하는 데 도움이 됩니다. 또한 성능 최적화와 애플리케이션 수준 문제 진단을 위해 Lambda 함수를 기록하고 모니터링할 수 있습니다.

Lambda 함수 로깅

Lambda는 Lambda 함수의 표준 출력 및 표준 오류 메시지를 다음으로 자동 스트리밍합니다. CloudWatch 로깅 드라이버 필요 없이 로깅할 수 있습니다. 또한 Lambda는 Lambda 함수를 실행하는 컨테이너를 자동으로 프로비저닝하고 별도의 로그 스트림에 로그 메시지를 출력하도록 구성합니다.

이후에 Lambda 함수를 호출하면 동일한 컨테이너와 출력을 동일한 로그 스트림으로 재사용할 수 있습니다. 또한 Lambda는 새 컨테이너를 프로비저닝하고 호출을 새 로그 스트림으로 출력할 수 있습니다.

Lambda는 Lambda 함수를 처음 호출할 때 자동으로 로그 그룹을 생성합니다. Lambda 함수는 여러 버전을 가질 수 있으며 실행하려는 버전을 선택할 수 있습니다. Lambda 함수 호출에 대한 모든 로그는 동일한 로그 그룹에 저장됩니다. 이름은 변경할 수 없으며 다음 위치에 있습니다./aws/lambda/<YourLambdaFunctionName>형식. 각 Lambda 함수 인스턴스의 로그 그룹에 별도의 로그 스트림이 생성됩니다. Lambda에는 a를 사용하는 로그 스트림에 대한 표준 명명 규칙이 있습니다.YYYY/MM/DD/[<FunctionVersion>]<InstanceId>형식. 더InstanceId에 의해 생성됩니다.AWSLambda 함수 인스턴스를 식별합니다.

를 사용하여 보다 쉽게 쿼리할 수 있으므로 로그 메시지를 JSON 형식으로 지정하는 것이 좋습니다. CloudWatch 로그 인사이트. 또한 더 쉽게 필터링하고 내보낼 수 있습니다. 로깅 라이브러리를 사용하여 이 프로세스를 단순화하거나 로그 처리 함수를 직접 작성할 수 있습니다. 로그 메시지를 형식화하고 분류하려면 로깅 라이브러리를 사용하는 것이 좋습니다. 예를 들어, Lambda 함수가 Python으로 작성된 경우 다음을 사용할 수 있습니다.파이썬 로깅 모듈메시지를 기록하고 출력 형식을 제어합니다. Lambda는 기본적으로 Python으로 작성된 Lambda 함수에 대해 Python 로깅 라이브러리를 사용하므로 Lambda 함수 내에서 로거를 검색하고 사용자 지정할 수 있습니다.AWS Labs는 다음을 만들었습니다.AWS파이썬용 람다 파워툴콜드 스타트와 같은 주요 데이터로 로그 메시지를 보다 쉽게 보강할 수 있는 개발자 툴킷. 이 툴킷은 파이썬, 자바, 타이프스크립트, .NET에서 사용할 수 있습니다.

또 다른 모범 사례는 변수를 사용하여 로그 출력 수준을 설정하고 환경 및 요구 사항에 따라 조정하는 것입니다. 사용된 라이브러리 외에도 Lambda 함수의 코드는 로그 출력 수준에 따라 대량의 로그 데이터를 출력할 수 있습니다. 이는 로깅 비용과 성능에 영향을 미칠 수 있습니다.

Lambda를 사용하면 코드를 업데이트하지 않고도 Lambda 함수 런타임 환경을 위한 환경 변수를 설정할 수 있습니다. 예를 들어, 다음을 생성할 수 있습니다.LAMBDA_LOG_LEVEL코드에서 검색할 수 있는 로그 출력 수준을 정의하는 환경 변수입니다. 다음 예제에서는 검색을 시도합니다.LAMBDA_LOG_LEVEL환경 변수를 선택하고 이 값을 사용하여 로깅 출력을 정의합니다. 환경 변수를 설정하지 않은 경우 기본값은 다음과 같습니다.INFO레벨.

import logging from os import getenv logger = logging.getLogger() log_level = getenv("LAMBDA_LOG_LEVEL", "INFO") level = logging.getLevelName(log_level) logger.setLevel(level)

에서 다른 목적지로 로그 전송 CloudWatch

다른 목적지 (예: Amazon) 로 로그를 보낼 수 있습니다. OpenSearch 구독 필터를 사용하여 서비스 또는 Lambda 함수). Amazon을 사용하지 않는 경우 OpenSearch 서비스에서는 Lambda 함수를 사용하여 로그를 처리하고 다음 주소로 전송할 수 있습니다.AWS다음을 사용하여 원하는 서비스를 선택하십시오.AWSSDK.

외부 로그 목적지에도 SDK를 사용할 수 있습니다.AWSLambda 함수의 클라우드를 통해 로그 명령문을 선택한 대상으로 직접 전송할 수 있습니다. 이 옵션을 선택하는 경우 지연 시간, 추가 처리 시간, 오류 및 재시도 처리, Lambda 함수에 대한 운영 로직 결합의 영향을 고려하는 것이 좋습니다.

Lambda 함수 지표

Lambda를 사용하면 서버를 관리하거나 확장하지 않고도 코드를 실행할 수 있으므로 시스템 수준 감사 및 진단의 부담이 거의 없어집니다. 하지만 Lambda 함수의 시스템 수준에서 성능 및 호출 지표를 이해하는 것은 여전히 중요합니다. 이를 통해 리소스 구성을 최적화하고 코드 성능을 개선할 수 있습니다. 성능을 효과적으로 모니터링하고 측정하면 Lambda 함수의 크기를 적절하게 조정하여 사용자 경험을 개선하고 비용을 절감할 수 있습니다. 일반적으로 Lambda 함수로 실행되는 워크로드에는 캡처 및 분석해야 하는 애플리케이션 수준 지표도 있습니다. Lambda는 내장된 지표 형식을 직접 지원하여 애플리케이션 수준에서 캡처할 수 있습니다. CloudWatch 메트릭이 더 쉬워집니다.

시스템 수준 메트릭

Lambda는 다음과 자동으로 통합됩니다. CloudWatch 지표 및 다음 세트를 제공합니다.Lambda 함수의 표준 메트릭. 또한 Lambda는 각 Lambda 함수에 대해 이러한 지표가 포함된 별도의 모니터링 대시보드를 제공합니다. 모니터링해야 하는 두 가지 중요한 지표는 오류와 호출 오류입니다. 호출 오류와 다른 오류 유형 간의 차이점을 이해하면 Lambda 배포를 진단하고 지원하는 데 도움이 됩니다.

호출 오류Lambda 함수가 실행되지 않도록 하십시오. 이러한 오류는 코드가 실행되기 전에 발생하므로 코드 내에서 오류 처리를 구현하여 오류를 식별할 수 없습니다. 대신 이러한 오류를 감지하고 운영 및 워크로드 소유자에게 알리는 Lambda 함수에 대한 경보를 구성해야 합니다. 이러한 오류는 종종 구성 또는 권한 오류와 관련이 있으며 구성 또는 권한의 변경으로 인해 발생할 수 있습니다. 호출 오류가 발생하면 재시도가 시작되어 함수가 여러 번 호출될 수 있습니다.

성공적으로 호출된 Lambda 함수는 함수에서 예외가 발생하더라도 HTTP 200 응답을 반환합니다. Lambda 함수는 오류 처리를 구현하고 예외를 발생시켜 다음을 수행해야 합니다.Errors지표는 Lambda 함수의 실패한 실행을 캡처하고 식별합니다. Lambda 함수 호출에서 실행이 완전히 실패했는지, 부분적으로 실패했는지 또는 성공했는지 확인하는 정보가 포함된 형식화된 응답을 반환해야 합니다.

CloudWatch 에서 제공합니다CloudWatch 람다 인사이트개별 Lambda 함수에 대해 활성화할 수 있습니다. Lambda Insights는 시스템 수준 지표 (예: CPU 시간, 메모리, 디스크 및 네트워크 사용량) 를 수집, 집계 및 요약합니다. 또한 Lambda Insights는 진단 정보 (예: 콜드 스타트 및 Lambda 작업자 종료) 를 수집, 집계 및 요약하여 문제를 격리하고 신속하게 해결하는 데 도움을 줍니다.

Lambda Insights는 내장된 메트릭 형식을 사용하여 성능 정보를 해당 위치로 자동으로 내보냅니다./aws/lambda-insights/Lambda 함수 이름을 기반으로 하는 로그 스트림 이름 접두사가 있는 로그 그룹. 이러한 성능 로그 이벤트는 다음을 생성합니다. CloudWatch 자동화의 기반이 되는 메트릭은 CloudWatch 대시보드. 성능 테스트 및 프로덕션 환경에서는 Lambda Insights를 활성화하는 것이 좋습니다. Lambda Insights에서 생성한 추가 지표는 다음과 같습니다.memory_utilization이렇게 하면 Lambda 함수의 크기를 올바르게 조정하여 불필요한 용량에 대한 비용을 지불하지 않아도 됩니다.

애플리케이션 지표

에서 자체 애플리케이션 메트릭을 생성하고 캡처할 수도 있습니다. CloudWatch 내장된 지표 형식 사용 활용할 수 있습니다.AWS는 임베디드 메트릭 형식을 위한 라이브러리를 제공했습니다.임베디드 메트릭 형식 명령문을 생성하고 내보낼 수 있습니다. CloudWatch. 통합 람다 CloudWatch 로깅 기능은 적절한 형식의 임베디드 메트릭 형식 명령문을 처리하고 추출하도록 구성되어 있습니다.