내용으로 건너뛰기

CloudWatch Logs의 스로틀링 오류를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon CloudWatch Logs에서 스로틀링 오류를 해결하고 싶습니다.

간략한 설명

CloudWatch Logs에서 API 속도 제한을 초과하면 API 스로틀링으로 인해 RequestLimitExceeded 또는 ThrottlingException 오류가 발생할 수 있습니다. 다음과 같은 시나리오에 따라 스로틀링 오류를 해결하십시오.

  • 로그에 액세스할 때 CloudWatch Logs에 간헐적인 스로틀링이 발생합니다.
  • ThrottlingException 오류는 애플리케이션이나 스크립트를 사용하여 CloudWatch 로그 데이터를 검색할 때 발생합니다.
  • PutLogEvents API를 AWS Lambda 함수와 통합하면 스로틀링 오류가 발생합니다.
  • 다른 AWS 서비스에 대한 로그를 활성화하면 PutResourcePolicy:ResourceLimitExceeded에 대한 스로틀링 오류가 발생합니다.

해결 방법

로그에 액세스할 때 CloudWatch Logs에 간헐적인 스로틀링 발생

FilterLogEventsGetLogEvents API는 특정 로그 스트림이나 로그 그룹의 로그 이벤트를 나열하는 데 사용됩니다. 이러한 API에는 엄격한 한도가 있으며 한도를 늘릴 수 없습니다. 이러한 API를 사용하여 로그 이벤트를 검색하고 엄격한 한도에 도달하면 RateExceeded 오류가 나타납니다. 엄격한 한도에 대한 자세한 내용은 CloudWatch Logs 할댱량을 참조하십시오.

다음은 이 시나리오에서 스로틀링 오류를 방지하는 모범 사례입니다.

애플리케이션 또는 스크립트를 사용하여 CloudWatch 로그 데이터를 검색할 때 ThrottlingException 오류 발생

수집기 스크립트는 CloudWatch Logs를 수집하는 데 사용되며 DescribeLogStream 또는 GetLogEvents API 직접 호출을 사용하여 데이터를 가져옵니다. 데이터는 동일한 로그 그룹 내의 다양한 로그 스트림 또는 다양한 기간에서 가져옵니다. 이러한 API를 사용할 때 ThrottlingException 오류가 발생할 수 있습니다.

다음은 이 시나리오에서 스로틀링 오류를 방지하는 모범 사례입니다.

  • API 직접 호출 시 지수 백오프 및 재시도를 사용하십시오. 자세한 내용은 지수 백오프 및 지터재시도 동작을 참조하십시오.
  • 무작위화와 함께 예약된 작업을 사용하여 일정 기간 동안 API를 배포합니다.
  • 연속된 API 직접 호출 사이에 절전 간격을 추가합니다. 또한 동일한 스크립트나 애플리케이션에서 전송되는 API 사이에 지연을 추가합니다. API를 빠른 속도로 연속해서 전송하면 속도 오류가 발생할 가능성이 더 큽니다.
  • Splunk와 같은 SIEM 솔루션을 사용하여 CloudWatch에서 로그를 검색합니다. SIEM 솔루션은 여러 시스템에서 데이터를 수집하고, 데이터를 분석하여 비정상적인 동작을 감지하는 데 사용됩니다. Splunk 플러그인을 사용하면 API 스로틀링이 발생할 수 있습니다. 이 문제를 방지하려면 Amazon Kinesis Data Firehose를 사용하여 CloudWatch Logs 구독 필터를 만들고 로그 데이터를 Splunk에 전송하십시오. 자세한 내용은 Splunk 웹사이트의 AWS용 Splunk 애드온에 대한 Kinesis 입력 구성을 참조하십시오.

PutLogEvents API 직접 호출을 AWS Lambda 함수와 통합하면 스로틀링 오류가 발생합니다.

PutLogEvents API는 1MB 단위로 지정된 로그 스트림에 로그를 업로드하는 데 사용됩니다. 이 API의 기본 속도 제한은 AWS 리전당 계정당 2500TPS입니다. 다음 지역의 속도 제한은 5000TPS입니다.

  • 미국 동부(버지니아 북부)
  • 미국 서부(오리건)
  • 유럽(아일랜드)
  • 유럽(밀라노)
  • 유럽(파리)
  • 유럽(스톡홀름)

이 시나리오의 TPS 제한 오류를 해결하려면 할당량 증가를 요청하십시오.

다른 AWS 서비스에 대한 로그를 활성화하면 PutResourcePolicy:ResourceLimitExceeded에 대한 스로틀링 오류 발생

PutResourcePolicy API는 다른 AWS 서비스가 로그 이벤트를 특정 계정에 배치할 수 있도록 정책을 생성하거나 업데이트하는 데 사용됩니다. 계정에는 지역당 최대 10개의 리소스 정책이 있을 수 있습니다. 이는 엄격한 한도이며 늘릴 수 없습니다.

지역에 있는 정책을 나열하려면 다음 명령을 실행합니다.

참고: example-region을 필요한 지역으로 바꿉니다.

$ aws logs describe-resource-policies --region example-region

이 스로틀링 오류를 해결하려면 delete-resource-policy 명령을 사용하여 필요하지 않거나 사용되지 않는 리소스 정책을 삭제합니다.

또 다른 방법은 여러 정책 설명을 하나의 정책으로 결합하는 것입니다. 이 방법을 사용하여 리소스 정책 수가 한도인 10개를 초과하지 않도록 하십시오.

관련 정보

CloudWatch API에서 PutMetricData를 직접 호출할 때 스로틀링을 방지하려면 어떻게 해야 합니까?

AWS 공식업데이트됨 2년 전