CloudWatch Logs에서 제한을 결정하려면 어떻게 해야 합니까?

4분 분량
0

Amazon CloudWatch Logs로 작업할 때 “RequestLimitExceeded” 또는 “ThrottlingException” 오류가 발생하여 API 호출이 제한되었습니다.

간략한 설명

CloudWatch 로그로 작업할 때 API 속도 제한을 초과할 수 있습니다. 이 경우 RequestLimitExceeded 또는 ThrottlingException 오류가 발생하고 API 호출이 제한됩니다. 이러한 오류를 해결하고 정보에 입각한 속도 제한 증가 요청을 할 수 있도록 제한이 발생하는 위치와 시기를 식별해야 합니다.

해결 방법

로그에 액세스할 때 CloudWatch Logs에서 간헐적으로 제한

FilterLogEvents 또는 GetLogEvents API 호출을 사용하여 로그 이벤트 또는 로그 스트림을 나열할 수 있습니다. 이러한 API 호출에는 엄격한 제한이 있으며 이는 한도 증가 대상이 아닙니다. 다시 말해, FilterLogEvents API를 사용하여 지정된 로그 그룹에서 로그 이벤트를 검색하는 경우 기본 quaAPI은 기본 할당량을 가집니다. 이 할당랼은 계정 또는 AWS 리전당 초당 트랜잭션(TPS) 5건입니다. 이 제한에 도달하면 RateExceeded 오류가 표시됩니다.

이 사용 사례의 제한 오류를 방지하려면 다음 모범 사례를 사용하세요.

애플리케이션/스크립트를 사용하여 CloudWatch Logs 데이터를 가져올 때 발생하는 ThrottlingException 오류

CloudWatch Logs를 수집하기 위해 수집기 스크립트를 개발할 수 있습니다. 이 스크립트는 동일한 로그 그룹의 서로 다른 로그 스트림 또는 다른 시간 프레임에서 데이터를 가져오기 위해 DescribeLogStream 또는 GetLogEvents API 호출을 시도합니다. FilterLogEvents, GetLogEventsDescribeLogStreams과 같은 API 호출은 자동화가 아닌 사람의 상호 작용을 위해 설계되었습니다. 즉, 오류가 발생하고 API 호출이 제한됩니다.

이 사용 사례에서 제한을 방지하려면 다음 모범 사례를 사용하세요.

  • API 호출을 할 때 지수 백오프 및 재시도를 사용합니다. 자세한 내용은 지수 백오프 및 지터AWS의 오류 재시도 및 지수 백오프 단원을 참조하세요.
  • 시간이 지남에 따라 API 호출을 배포합니다. 일정 기간 동안 분산되도록 일부 무작위를 사용하여 작업을 예약합니다.
  • 연속 API 호출 사이에 중지 간격을 추가합니다. 동일한 스크립트 또는 애플리케이션에서 전송되는 API 호출 사이에 약간의 지연을 추가합니다. API 호출을 빠르고 연속적으로 전송하면 속도 오류가 발생할 가능성이 더 큽니다.
  • 경우에 따라 Splunk와 같은 SIEM 솔루션을 사용하여 CloudWatch에서 로그를 가져올 수 있습니다. SIEM 솔루션은 여러 시스템에서 데이터를 수집하고, 수집한 데이터를 분석하여 비정상적인 동작을 감지하는 데 사용됩니다. Splunk 플러그 인을 사용할 경우 API 제한이 발생할 수 있습니다. 이 문제를 방지하려면 Amazon Kinesis Data Firehose로 CloudWatch Logs 구독 필터를 생성하고 로그 데이터를 Splunk로 전송해야 합니다. 자세한 내용은 AWS용 Splunk 추가 기능에 대한 Kinesis 입력 구성에 대한 Splunk 설명서 단원을 참조하세요.

PutLogEvents API 호출을 Lambda 함수와 통합할 때 발생하는 제한 오류

PutLogEvents API 호출은 1MB의 배치로 지정된 로그 스트림에 로그를 업로드하는 데 사용됩니다. 이 API의 속도 제한은 리전당 계정당 800TPS입니다. 이는 미국 동부(버지니아 북부), 미국 서부(오레곤) 및 EU(아일랜드)과 같이 리전당 계정당 초당 1,500건의 TPS가 할당되는 리전을 제외하고 적용됩니다. 할당량 증가를 요청할 수 있습니다.

이에 대한 자세한 내용과 할당량 증가를 요청하려면 CloudWatch Logs 할당량 단원을 참조하세요.

CloudWatch Logs Service Quotas 관리

AWS는 성능을 보호하고 가용성을 보장하기 위해 서비스에 대한 할당량을 정의합니다. CloudWatch에는 지표, 경보, API 요청 및 경보 이메일 알림에 대한 할당량이 있습니다. 임계 값에 도달하면 다음 단계를 사용하여 Service Quotas를 시각화하고 경보를 설정합니다.

1.    Service Quotas 콘솔을 엽니다.

2.    탐색 창에서 **AWS 서비스(AWS services)**를 선택합니다.

3.    AWS 서비스(AWS services) 목록에서 Amazon CloudWatch Logs를 검색합니다.

4.    서비스 할당량(Service quotas) 목록은 다양한 속성 또는 옵션, 즉 서비스 할당량 이름, 적용된 값(사용 가능한 경우), AWS 기본 할당량 및 할당량 값의 조정 가능 여부를 표시합니다.

5.    설명과 같은 서비스 할당량에 대한 자세한 정보를 보려면 할당량 이름을 선택합니다.

6.    할당량 이름을 선택하면 이 할당량에 대한 자세한 정보를 볼 수 있습니다. 예를 들어 **GetLogEvents의 초당 트랜잭션 제한 한도(GetLogEvents throttle limit in transactions per second)**를 선택하면 다음 항목이 표시됩니다.

설명

할당량 코드

할당량 ARN

사용률: %

적용된 할당량 값

AWS 기본 할당량 값

조절 가능: 예/아니요

7.    Amazon CloudWatch 경보(Amazon CloudWatch alarms) 섹션에서 **경보 생성(Create alarm)**을 선택하고 **경보 임계 값(Alarm threshold)**과 **경보 이름(Alarm name)**을 입력합니다.


관련 정보

CloudWatch API에서 PutMetricData를 호출할 때 제한을 방지하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 3달 전