Comment déterminer la limitation dans mes journaux CloudWatch Logs ?

Lecture de 6 minute(s)
0

Je reçois u une erreur « RequestLimitExceeded » ou « ThrottlingException » lorsque je travaille avec des journaux Amazon CloudWatch, et mon appel d'API est limité.

Brève description

Lorsque vous travaillez avec des journaux CloudWatch, vous pouvez dépasser la limite de débit de l'API. Lorsque cela se produit, vous recevez une erreur RequestLimitExceeded ou ThrottlingException, et votre appel d'API est limité. Vous devez identifier où et quand la limitation se produit afin de pouvoir résoudre ces erreurs et faire des demandes d'augmentation des limites de débit de manière réfléchie.

Solution

Limitation intermittente des journaux CloudWatch lors de l'accès aux journaux

Vous pouvez utiliser FilterLogEvents ou GetLogEvents pour répertorier vos événements de journaux ou vos flux de journaux. Ces appels d'API ont une limite stricte et ils ne sont pas éligibles à une augmentation des limites. Cela signifie que si vous utilisez l'API FilterLogEvents pour rechercher des événements de journaux à partir d'un groupe de journaux spécifié, le quaAPI par défaut a un quota par défaut. Ce devis correspond à 5 transactions par seconde (TPS) par compte ou région AWS. Si vous atteignez cette limite, vous recevez l'erreur RateExceeded.

Utilisez ces bonnes pratiques pour éviter les erreurs de limitation dans ce cas d'utilisation :

Erreurs ThrottlingException lors de l'utilisation d'une application/d'un script pour récupérer les données dans le journal CloudWatch

Pour collecter les journaux CloudWatch, vous pouvez développer un collecteur de scripts. Ce script tente d'effectuer un appel d'API DescribeLogStream ou GetLogEvents pour extraire des données de différents flux de journaux ou de différentes périodes dans le même groupe de journaux. Les appels d'API tels que FilterLogEvents, GetLogEvents et DescribeLogStreams sont conçus pour l'interaction humaine et non pour l'automatisation. Cela signifie que vous recevez une erreur et que l'appel d'API est limité.

Utilisez ces bonnes pratiques pour éviter la limitation dans ce cas d'utilisation :

  • Utilisez le backoff exponentiel et les nouvelles tentatives lorsque vous effectuez un appel d'API. Pour plus d'informations, consultez les sections Backoff exponentiel et gigue et Nouvelles tentatives après erreur et backoff exponentiel dans AWS.
  • Distribuez vos appels d'API au fil du temps. Planifiez des actions avec une certaine randomisation afin qu'elles soient réparties sur une période de temps.
  • Ajoutez des intervalles de repos entre les appels d'API consécutifs. Ajoutez un certain délai entre les appels d'API envoyés depuis le même script ou la même application. Si vous envoyez des appels d'API en succession rapide, des erreurs de débits sont plus susceptibles de se produire.
  • Dans certains cas, vous pouvez utiliser une solution SIEM telle que Splunk pour récupérer les journaux depuis CloudWatch. Les solutions SIEM sont utilisées pour collecter des données provenant de plusieurs systèmes et analyser ces données afin de détecter un comportement inhabituel. Vous pouvez rencontrer des limitations d'API lorsque vous utilisez le plugin Splunk. Pour éviter ce problème, créez un filtre d'abonnement aux journaux CloudWatch avec Amazon Kinesis Data Firehose et envoyez les données de journaux à Splunk. Pour plus d'informations, consultez la documentation de Splunk pour Configurer les entrées Kinesis pour le module complémentaire Splunk pour AWS (Langue Français non garanti).

Erreurs de limitation lors de l'intégration des appels d'API PutLogEvents avec la fonction Lambda

L'appel d'API PutLogEvents est utilisé pour charger les journaux dans un flux de journaux spécifié par lots de 1 Mo. Cette API a une limite de débit de 800 TPS, par compte et par région. Cela s'applique sauf pour les régions suivantes où le quota est de 1500 TPS, par compte et par région : USA Est (Virginie du Nord), USA Ouest (Oregon) et Europe (Irlande). Vous pouvez demander une augmentation des quotas.

Pour plus d'informations à ce sujet et pour demander une augmentation des quotas, consultez la section Quotas CloudWatch Logs.

Gérer vos quotas de service CloudWatch Logs

AWS définit des quotas pour les services afin de protéger les performances et de garantir la disponibilité. CloudWatch dispose de quotas pour les métriques, les alarmes, les demandes d'API et les notifications d'alarme par e-mail. Suivez ces étapes pour visualiser vos quotas de service et définir des alarmes si vous atteignez le seuil :

1.    Connectez-vous à la console Service Quotas.

2.    Dans le panneau de navigation, choisissez AWS services (Services AWS).

3.    Dans la liste des services AWS, recherchez Amazon CloudWatch Logs.

4.    La liste Quotas de service, vous propose différents attributs ou options : le nom du quota de service, la valeur appliquée (si elle est disponible), le quota AWS par défaut et si la valeur du quota est ajustable.

5.    Pour afficher plus d'informations sur un quota de service, comme sa description, choisissez le nom du quota.

6.    Une fois que vous avez choisi le nom du quota, vous pouvez voir plus d'informations sur ce quota. Par exemple, si vous choisissez la limite GetLogEvents dans les transactions par seconde, vous voyez les éléments suivants :

Description

Code de quota

ARN de quota

Utilisation : %

Valeur du quota appliqué

Valeur du quota AWS par défaut

Ajustable : O/N

7.    Dans la section Alarmes Amazon CloudWatch, choisissez Créer une alarme, puis saisissez un seuil d'alarme et un nom d'alarme.


Informations connexes

Comment éviter les limitations lorsque j'appelle PutMetricData dans l'API CloudWatch ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an