Come posso determinare la limitazione (della larghezza di banda della rete) nei file di log Amazon CloudWatch?

Ultimo aggiornamento: 06/04/2022

Ho ricevuto un errore RequestLimitExceeded o ThrottlingException quando lavoravo con Amazon CloudWatch Logs e la mia chiamata API è stata limitata. Come posso impedire la limitazione in CloudWatch Logs?

Breve descrizione

Quando lavori con CloudWatch Logs, potresti superare il limite di velocità delle API. Quando ciò accade, ricevi un errore RequestLimitExceeded o ThrottlingException e la tua chiamata API viene limitata. È necessario identificare dove e quando si verifica la limitazione, in modo da poter risolvere questi errori ed effettuare richieste informate di aumento del limite di velocità.

Risoluzione

Limitazione intermittente su CloudWatch Logs quando si accede ai registri

È possibile utilizzare le chiamate API FilterLogEvents o GetLogEvents per elencare il registro eventi o i flussi di registro. Queste chiamate API hanno un limite rigido e non supportano un aumento del limite. Ciò significa che se si utilizza l'API FilterLogEvents per cercare eventi di registro in un gruppo specifico di registro, la QuaAPI di default ha una quota di default di 5 transazioni al secondo (TPS) per account/Regione. Se raggiungi questo limite, riceverai l'errore RateExceeded.

Utilizza queste best practice per evitare errori di limitazione in questo caso d'uso:

Errori di ThrottlingException quando si utilizza un'applicazione/uno script per recuperare i dati di registro di CloudWatch

Per raccogliere i registri di CloudWatch, puoi sviluppare uno script di raccolta. Questo script tenta di effettuare una chiamata API DescribeLogStream o GetLogEvents per estrarre dati da diversi flussi di registro o intervalli di tempo diversi nello stesso gruppo di registro. Le chiamate API come FilterLogEvents, GetLogEvents e DescribeLogStreams sono progettate per l'interazione umana e non per l'automazione, quindi ricevi un errore e la chiamata API viene limitata.

Utilizza queste best practice per evitare la limitazione in questo caso d'uso:

  • Quando effettui una chiamata API, utilizza il backoff esponenziale e riprova. Per ulteriori informazioni, consulta Backoff esponenziale e jitter e Ripetizione dei tentativi in caso di errore e backoff esponenziale in AWS.
  • Distribuisci le tue chiamate API nel tempo. Prova a programmare le operazioni con una certa randomizzazione in modo che siano distribuite su un periodo di tempo.
  • Aggiungi intervalli di sospensione tra chiamate API consecutive. Aggiungi un ritardo tra le chiamate API inviate dallo stesso script o applicazione. Se le chiamate API vengono inviate tutte in rapida successione, è più probabile che si verifichino errori di velocità.
  • In alcuni casi, potresti utilizzare una soluzione SIEM come Splunk per recuperare i registri da CloudWatch. Le soluzioni SIEM vengono utilizzate per raccogliere dati da più sistemi e analizzare questi dati per rilevare comportamenti insoliti. È possibile che si verifichi una limitazione delle API quando si utilizza il plug-in Splunk. Per evitare questo problema, crea un filtro di sottoscrizione per i file di log Amazon CloudWatch con Amazon Kinesis Data Firehose e distribuisci i dati di registro a Splunk. Per ulteriori informazioni, consulta Configure Kinesis inputs for the Splunk Add-on for AWS (Configurazione degli input Kinesis per il componente aggiuntivo Splunk per AWS).

Errori di limitazione (della larghezza di banda della rete) durante l'integrazione delle chiamate API PutLogEvents con la funzione Lambda

La chiamata API PutLogEvents viene utilizzata per caricare i registri in un flusso di registri specificato in batch da 1 MB. Questa API ha due limiti di velocità:

  • 5 richieste al secondo per flusso di registro. Le richieste aggiuntive sono limitate. Questa quota non può essere modificata.
  • 800 transazioni al secondo, per account, per Regione. Ciò si applica ad eccezione delle seguenti Regioni in cui la quota è di 1.500 transazioni al secondo per account per Regione: Stati Uniti orientali (Virginia settentrionale), Stati Uniti occidentali (Oregon) ed Europa (Irlanda). Puoi richiedere un aumento della quota.

Per ulteriori informazioni su questo argomento e per richiedere un aumento della quota, consulta Quote di CloudWatch Logs.

Per scrivere i registri nel flusso di registri specificato, è necessario includere nella richiesta il token di sequenza. Questo è stato estratto l'ultima volta dalla risposta alla chiamata precedente. In alcuni casi, è possibile utilizzare l'API DescribeLogStreams per ottenere il token di sequenza successivo per il flusso di registro prima di chiamare PutLogEvent. L'API PutLogEvent ha un limite molto più alto di DescribeLogsStream e questo causa la limitazione. Per mitigare questo problema, utilizza l'API PutLogEvents per ottenere la sequenza invece di DescribeLogStreams. Si riceve un codice di stato 400 quando si utilizza l'API PutLogEvents senza un token di sequenza, ma con questo messaggio di errore si ottiene il token di sequenza successivo. È possibile utilizzare nuovamente questo token di sequenza con l'API PutLogEvents.

Usa questi suggerimenti per evitare la limitazione in questo caso d'uso:

  • Prova a combinare più registri eventi nella stessa chiamata API.
  • Diffondi le chiamate API su più flussi di registro.
  • Applica la logica dei tentativi con backoff esponenziale e jitter. Per ulteriori informazioni, consulta Gestire e monitorare la limitazione delle API nei carichi di lavoro.
  • Distribuisci le chiamate API in modo uniforme nel tempo.

Gestisci le Service Quotas di CloudWatch Logs

AWS definisce le quote dei servizi per proteggere le prestazioni e garantire la disponibilità. CloudWatch prevede quote per parametri, allarmi, richieste API e notifiche e-mail di allarme. Segui questi passaggi per visualizzare le tue Service Quotas e impostare allarmi se raggiungi la soglia:

  1. Apri la console Service Quotas.
  2. Nel pannello di navigazione, scegli servizi AWS.
  3. Dall'elenco dei servizi AWS, cerca Amazon CloudWatch Logs.
  4. Nell'elenco delle Service Quotas, puoi vedere il nome della quota di servizio, il valore applicato (se disponibile), la quota di default di AWS e se il valore della quota è regolabile.
  5. Per visualizzare ulteriori informazioni su una quota di servizio, ad esempio la descrizione, scegli il nome della quota.
  6. Dopo aver scelto il nome della quota, è possibile visualizzare ulteriori informazioni su questa quota. Ad esempio, se scegli il limite GetLogEvents nelle transazioni al secondo, vedrai:
    • Descrizione
    • Codice della quota
    • ARN quota
    • Utilizzo: %
    • Valore della quota applicato
    • Valore della quota di default di AWS
    • Regolabile: S/N
  7. Nella sezione Allarmi di Amazon CloudWatch, scegli Crea allarme e inserisci una soglia di allarme e un nome per l'allarme.

Questo articolo è stato utile?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?