Como faço para determinar o controle de utilização nos logs do CloudWatch?

Data da última atualização: 9/1/2023

Recebo um erro “RequestLimitExceeded” ou “ThrottlingException” ao trabalhar com logs do Amazon CloudWatch e foi aplicado controle de utilização à minha chamada de API.

Breve descrição

Ao trabalhar com logs do CloudWatch, pode ser que você exceda o limite de taxa da API. Quando isso acontece, você recebe um erro RequestLimitExceeded ou ThrottlingException e é aplicado um controle de utilização à chamada de API. Você deve identificar onde e quando o controle de utilização está ocorrendo para poder resolver esses erros e fazer solicitações embasadas de aumento de limite de taxa.

Resolução

Controle de utilização intermitente nos logs do CloudWatch ao acessar logs

Você pode usar as chamadas de API FilterLogEvents ou GetLogEvents para listar eventos de log ou fluxos de log. Essas chamadas de API têm um limite máximo e não se qualificam para aumento de limite. Isso significa que, quando você usa a API FilterLogEvents para pesquisar eventos de log de um grupo de logs especificado, a quaAPI padrão tem uma cota padrão. Essa cota é de 5 transações por segundo (TPS) por conta ou região da AWS. Se você atingir esse limite, receberá o erro RateExceeded.

Use estas práticas recomendadas para evitar erros de controle de utilização neste caso de uso:

Erros de ThrottlingException ao usar uma aplicação/um script para buscar dados de log do CloudWatch

Para coletar logs do CloudWatch, você pode desenvolver um script coletor. Esse script tenta fazer uma chamada de API DescribeLogStream ou GetLogEvents para extrair dados de fluxos de log distintos ou períodos de tempo diferentes no mesmo grupo de logs. Chamadas de API como FilterLogEvents, GetLogEvents e DescribeLogStreams são projetadas para interação humana e não para automação. Isso significa que você recebe um erro e é aplicado o controle de utilização à chamada de API.

Use estas práticas recomendadas para evitar o controle de utilização neste caso de uso:

  • Use recuo exponencial e novas tentativas ao fazer uma chamada de API. Para obter mais informações, consulte Exponential backoff and jitter (Recuo exponencial e tremulação) e Error retries and exponential backoff in AWS (Novas tentativas em caso de erro e recuo exponencial na AWS).
  • Distribua suas chamadas de API ao longo do tempo. Programe ações de forma um tanto aleatória para que elas sejam distribuídas por um período de tempo.
  • Adicione intervalos de hibernação entre chamadas de API consecutivas. Adicione alguma demora entre as chamadas de API enviadas do mesmo script ou aplicação. Se você enviar chamadas de API em rápida sucessão, é possível que isso cause erros de taxa.
  • Em alguns casos, você pode usar uma solução SIEM como o Splunk para buscar logs do CloudWatch. As soluções SIEM são usadas para coletar dados de vários sistemas e analisar esses dados para detectar comportamentos incomuns. Você pode experimentar um controle de utilização de API quando usar o plugin Splunk. Para evitar esse problema, crie um filtro de assinatura de logs do CloudWatch com o Amazon Kinesis Data Firehose e forneça os dados de log ao Splunk. Para obter mais informações, consulte a documentação do Splunk para Configure Kinesis inputs for the Splunk Add-on for AWS (Configurar entradas do Kinesis para o complemento do Splunk para a AWS).

Erros de controle de utilização ao integrar chamadas de API PutLogEvents com função do Lambda

A chamada de APIPutLogEvents é usada para carregar logs para um fluxo de logs especificado em lotes de 1 MB. Essa API tem um limite de taxa de 800 TPS, por conta, por região. Isso se aplica, exceto para as seguintes regiões onde a cota é de 1.500 TPS por conta, por região: Leste dos EUA (Norte da Virgínia), Oeste dos EUA (Oregon) e Europa (Irlanda). Você pode solicitar um aumento de cota.

Para obter mais informações sobre esse assunto e para solicitar um aumento de cota, consulte CloudWatch Logs quotas (Cotas do CloudWatch Logs).

Gerenciar cotas de serviço do CloudWatch Logs

A AWS define cotas para serviços para proteger a performance e garantir a disponibilidade. O CloudWatch tem cotas para métricas, alarmes, solicitações de API e notificações de alarme por e-mail. Siga estas etapas para ver as cotas de serviço e definir alarmes se você atingir o limite:

1.    Abra o Service Quotas console (Console do Service Quotas).

2.    No painel de navegação, escolha AWS services (Serviços da AWS).

3.    Na lista AWS services (serviços da AWS), pesquise Amazon CloudWatch logs (Logs do Amazon CloudWatch).

4.    A lista Service quotas (Cotas de serviço) mostra vários atributos ou opções: o nome da cota de serviço, o valor aplicado (se disponível), a cota padrão da AWS e se o valor da cota é ajustável.

5.    Para visualizar mais informações sobre uma cota de serviço, como a descrição, escolha o nome da cota.

6.    Depois de escolher o nome da cota, você poderá ver mais informações sobre essa cota. Por exemplo, se escolher GetLogEvents throttle limit in transactions per second (Limite de controle de utilização de GetLogEvents em transações por segundo), você verá os seguintes itens:

Descrição (Descrição)

Quota code (Código de cota)

Quota ARN (ARN da cota)

Utilization: % (Utilização: %)

Applied quota value (Valor da cota aplicada)

AWS default quota value (Valor da cota padrão da AWS)

Adjustable: Y/N (Ajustável: S/N)

7.    Na seção Amazon CloudWatch alarms (Alarmes do Amazon CloudWatch), escolha Create alarm (Criar alarme) e insira um Alarm threshold (Limite para o alarme) e um Alarm name (Nome do alarme).


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?