¿Cómo determino la limitación en mis registros de CloudWatch?

Última actualización: 06/04/2022

Recibí un error RequestLimitExceeded o ThrottlingException al trabajar con registros de Amazon CloudWatch y se limitó mi llamada a la API. ¿Cómo puedo evitar la limitación en mis registros de CloudWatch?

Descripción corta

Al trabajar con registros de CloudWatch, es posible que supere el límite de frecuencia de la API. Cuando esto sucede, recibe un error RequestLimitExceeded o ThrottlingException y se limita la llamada a la API. Debe identificar dónde y cuándo se produce la limitación para poder resolver estos errores y realizar solicitudes informadas de aumento del límite de frecuencia.

Resolución

Limitación intermitente en los registros de CloudWatch al acceder a los registros

Puede usar las llamadas a la API FilterLogEvents o GetLogEvents para enumerar los eventos de registro o las secuencias de registro. Estas llamadas a la API tienen un límite estricto y no cumplen los requisitos para un aumento del límite. Esto significa que si usa la API FilterLogEvents para buscar eventos de registro de un grupo de registros específico, la API predeterminada tiene una cuota predeterminada de 5 transacciones por segundo (TPS) por cuenta/región. Si alcanza ese límite, recibirá el error RateExceeded.

Siga estas prácticas recomendadas para evitar errores de limitación en este caso de uso:

Errores de ThrottlingException al utilizar una aplicación/script para obtener datos de registro de CloudWatch

Para recopilar registros de CloudWatch, puede desarrollar un script de recolector. Este script intenta realizar una llamada a la API DescribeLogStream o GetLogEvents para extraer datos de diferentes secuencias de registro o diferentes marcos de tiempo en el mismo grupo de registros. Las llamadas a la API como FilterLogEvents, GetLogEvents y DescribeLogStreams están diseñadas para la interacción humana y no para la automatización, por lo que recibe un error y la llamada a la API se limita.

Siga estas prácticas recomendadas para evitar la limitación en este caso de uso:

  • Usa el retroceso exponencial y los reintentos cuando realice una llamada a la API. Para obtener más información, consulte Exponential backoff and jitter (Retroceso exponencial y fluctuación) y Error retries and exponential backoff (Reintentos de error y retroceso exponencial en AWS).
  • Distribuya sus llamadas a la API en el tiempo. Intente programar acciones con cierta aleatorización para que se distribuyan durante un período de tiempo.
  • Agregue intervalos de inactividad entre llamadas a la API consecutivas. Agregue cierto retraso entre las llamadas a la API que se envían desde el mismo script o aplicación. Si todas las llamadas a la API se envían muy seguidas unas de otras, es más probable que se produzcan errores de frecuencia.
  • En algunos casos, puede utilizar una solución SIEM como Splunk para obtener registros de CloudWatch. Las soluciones SIEM se utilizan para recopilar datos de múltiples sistemas y analizar estos datos para detectar comportamientos inusuales. Es posible que experimente una limitación de API cuando use el complemento Splunk. Para evitar este problema, cree un filtro de suscripción de registros de CloudWatch con Amazon Kinesis Data Firehose y entregue los datos de registro a Splunk. Para obtener más información, consulte Configurar entradas de Kinesis para el complemento de Splunk para AWS.

Errores de limitación al integrar llamadas a la API PutLogEvents con la función Lambda

La llamada a la API PutLogEvents se utiliza para cargar registros en una secuencia de registros especificada en lotes de 1 MB. Esta API tiene dos límites de frecuencia:

  • 5 solicitudes por segundo por secuencia de registro. Las solicitudes adicionales están limitadas. Esta cuota no se puede cambiar.
  • 800 transacciones por segundo, por cuenta y por región. Esta cuota no se aplica en las siguientes regiones, donde la cuota es de 1500 transacciones por segundo por cuenta y región: Este de EE. UU. (Norte de Virginia), Oeste de EE. UU. (Oregón) y Europa (Irlanda). Puede solicitar un aumento de cuota.

Para obtener más información al respecto y solicitar un aumento de cuota, consulte Cuotas de CloudWatch Logs.

Para escribir registros en la secuencia de registros especificada, debe incluir el token de secuencia en la solicitud. Esto se extrajo por última vez de la respuesta a la llamada anterior. En algunos casos, puede usar la API DescribeLogStreams para obtener el siguiente token de secuencia para la secuencia de registro antes de llamar a PutLogEvent. La API PutLogEvent tiene un límite mucho más alto que DescribeLogsStream, y esto provoca una limitación. Para mitigar esto, utilice la API PutLogEvents para obtener la secuencia en lugar de DescribeLogStreams. Recibe un código de estado 400 cuando usa la API PutLogEvents sin un token de secuencia, pero con este mensaje de error, obtiene el siguiente token de secuencia. Puede volver a usar este token de secuencia con la API PutLogEvents.

Siga estos consejos para evitar la limitación en este caso de uso:

  • Intente combinar varios eventos de registro en la misma llamada a la API.
  • Distribuya las llamadas a la API en más secuencias de registro.
  • Aplique la lógica de reintento con retroceso exponenciales y fluctuaciones. Para obtener más información, consulte Administrar y supervisar la limitación de las API en sus cargas de trabajo.
  • Distribuya sus llamadas a la API de manera uniforme en el tiempo.

Administrar sus cuotas de servicio de CloudWatch Logs

AWS define las cuotas de los servicios para proteger el rendimiento y garantizar la disponibilidad. CloudWatch tiene cuotas para métricas, alarmas, solicitudes de API y notificaciones por correo electrónico de alarmas. Siga estos pasos para visualizar sus cuotas de servicio y configurar alarmas si alcanza el umbral:

  1. Abra la consola de Service Quotas.
  2. En el panel de navegación, elija AWS services (servicios de AWS).
  3. En la lista AWS services (Servicios de AWS), busque Amazon CloudWatch logs (Registros de Amazon CloudWatch).
  4. En la lista Service quotas (Cuotas de servicio), puede ver el nombre de la cuota de servicio, el valor aplicado (si está disponible), la cuota predeterminada de AWS y si el valor de la cuota es ajustable.
  5. Para ver más información sobre una cuota de servicio, como la descripción, elija el nombre de la cuota.
  6. Después de elegir el nombre de la cuota, podrá ver más información sobre esta cuota. Por ejemplo, si elige GetLogEvents throttle limit in transactions per second (Límite de GetLogEvents para transacciones por segundo), verá:
    • Descripción
    • Código de cuota
    • ARN de cuota
    • Utilización: %
    • Valor de cuota aplicado
    • Valor de cuota predeterminado de AWS
    • Ajustable: S/N
  7. En la sección Amazon CloudWatch Alarms (Alarmas de Amazon CloudWatch), elija Create alarm (Crear alarma) y especifique un Alarm threshold (Umbral de alarma) y un Alarm name (Nombre de alarma).

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?