Como determino o controle de utilização nos logs do CloudWatch?

Data da última atualização: 06/04/2022

Recebi um erro RequestLimitExceeded ou ThrottlingException ao trabalhar com logs do Amazon CloudWatch e foi aplicado controle de utilização à chamada de API. Como posso evitar a aplicação de controle de utilização nos logs do CloudWatch?

Breve descrição

Ao trabalhar com logs do CloudWatch, pode ser que você exceda o limite de taxa de 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 transmissões de log. Essas chamadas de API têm um limite rígido 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 de 5 transações por segundo (TPS) por conta/região. 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/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 transmissões de log diferentes 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, por isso você recebe um erro e a utilização de chamada de API é controlada.

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 (Tentativas de erro e recuo exponencial na AWS).
  • Distribua suas chamadas de API ao longo do tempo. Tente agendar 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 todas as chamadas de API forem enviadas em rápida sucessão, existe maior probabilidade de 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 lgos do CloudWatch com o Amazon Kinesis Data Firehose e forneça os dados de log ao Splunk. Para obter mais informações, consulte Configure Kinesis inputs for the Splunk Add-on for AWS (Configurar entradas do Kinesis para o complemento Splunk para a AWS).

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

A chamada de API PutLogEvents é usada para carregar logs para uma transmissão de log especificada em lotes de 1 MB. Essa API tem dois limites de taxa:

  • 5 solicitações por segundo por transmissão de log. A utilização de solicitações adicionais é controlada. Essa cota não pode ser alterada.
  • 800 transações por segundo, por conta, por região. Isso se aplica, exceto para as seguintes regiões onde a cota é de 1500 transações por segundo 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 isso e para solicitar um aumento de cota, consulte Cotas do CloudWatch Logs.

Para gravar registros na transmissão de log especificada, você deve incluir o token sequencial na solicitação. Isso foi extraído pela última vez da resposta à chamada anterior. Em alguns casos, você pode usar a API DescribeLogStreams para obter o próximo token sequencial para a transmissão de log antes de chamar PutLogEvent. A API PutLogEvent tem um limite muito maior do que a API DescribeLogsStream e isso causa o controle de utilização. Para atenuar isso, use a API PutLogEvents para obter a sequência em vez de DescribeLogStreams. Você recebe um código de status 400 quando usa a API PutLogEvents sem um token sequencial, mas com essa mensagem de erro você recebe o próximo token sequencial. Você pode usar esse token sequencial novamente com a API PutLogEvents.

Use estas dicas para evitar o controle de utilização neste caso de uso:

  • Tente combinar vários eventos de log na mesma chamada de API.
  • Distribua as chamadas de API por mais sequências de log.
  • Aplique a lógica de nova tentativa com recuo exponencial e tremulação. Para obter mais informações, consulte Managing and monitoring API throttling in your workloads (Gerenciar e monitorar o controle de utilização de API em workloads).
  • Distribua suas chamadas de API uniformemente ao longo do tempo.

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 console Service Quotas (Cotas de serviço).
  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. Na lista Service quotas (Cotas de serviço), você pode ver 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 ver 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á:
    • Description (Descrição)
    • Quota code (Código de cota)
    • Quota code (ARN de cota)
    • Utilization: % (Utilização: %)
    • Applied quota value (Valor da cota aplicada)
    • Applied quota value (Valor de 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?