Connettore Amazon Athena per CloudWatch
Il connettore Amazon Athena per CloudWatch consente ad Amazon Athena di comunicare con CloudWatch in modo da poter eseguire query sui dati del log con SQL.
Questo connettore non utilizza connessioni Glue per centralizzare le proprietà di configurazione in Glue. La configurazione della connessione viene effettuata tramite Lambda.
Il connettore associa i LogGroup come schemi e ogni LogStream come una tabella. Il connettore inoltre mappa una visualizzazione all_log_streams speciale che contiene tutti i LogStream nel LogGroup. Questa visualizzazione consente di eseguire una query su tutti i log di un LogGroup alla volta anziché cercare in ogni LogStream singolarmente.
Prerequisiti
Implementa il connettore sul tuo Account AWS utilizzando la console Athena o AWS Serverless Application Repository. Per ulteriori informazioni, consulta Crea una connessione di un'origine dati o Utilizzare AWS Serverless Application Repository per distribuire un connettore origine dati.
Parametri
Utilizzare i parametri illustrati in questa sezione per configurare il connettore CloudWatch.
Si consiglia di configurare un connettore CloudWatch utilizzando un oggetto di connessioni Glue. Per fare ciò, imposta la variabile di ambiente glue_connection del connettore CloudWatch Lambda sul nome della connessione Glue da utilizzare.
Proprietà delle connessioni Glue
Utilizzare il seguente comando per ottenere lo schema di un oggetto di connessione Glue. Questo schema contiene tutti i parametri che è possibile usare per controllare la connessione.
aws glue describe-connection-type --connection-type CLOUDWATCH
Proprietà dell'ambiente Lambda
-
glue_connection: specifica il nome della connessione Glue associata al connettore federato.
Nota
-
Tutti i connettori che utilizzano le connessioni Glue devono utilizzare Gestione dei segreti AWS per memorizzare le credenziali.
-
Il connettore CloudWatch creato utilizzando le connessioni Glue non supporta l'uso di un gestore multiplexing.
-
Il connettore CloudWatch creato utilizzando le connessioni Glue supporta solo 2
ConnectionSchemaVersion.
-
spill_bucket: specifica il bucket Amazon S3 per i dati che superano i limiti della funzione Lambda.
-
spill_prefix: (facoltativo) per impostazione predefinita, viene utilizzata una sottocartella nello
spill_bucketspecificato chiamataathena-federation-spill. Ti consigliamo di configurare un ciclo di vita dell'archiviazione di Amazon S3 in questa posizione per eliminare gli spill più vecchi di un numero predeterminato di giorni o ore. -
spill_put_request_headers: (facoltativo) una mappa codificata in JSON delle intestazioni e dei valori della richiesta per la richiesta
putObjectdi Amazon S3 utilizzata per lo spill (ad esempio,{"x-amz-server-side-encryption" : "AES256"}). Per altre possibili intestazioni, consulta l'argomento relativo a PutObject nella Documentazione di riferimento dell'API di Amazon Simple Storage Service. -
kms_key_id: (facoltativo) per impostazione predefinita, tutti i dati riversati in Amazon S3 vengono crittografati utilizzando la modalità di crittografia autenticata AES-GCM e una chiave generata casualmente. Per fare in modo che la tua funzione Lambda utilizzi chiavi di crittografia più potenti generate da KMS come
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, puoi specificare l'ID della chiave KMS. -
disable_spill_encryption: (facoltativo) se impostato su
True, disabilita la crittografia dello spill. L'impostazione predefinita èFalse: in questo modo, i dati riversati su S3 vengono crittografati utilizzando AES-GCM tramite una chiave generata casualmente o una chiave generata mediante KMS. La disabilitazione della crittografia dello spill può migliorare le prestazioni, soprattutto se la posizione dello spill utilizza la crittografia lato server.
Il connettore supporta anche il controllo della congestione IAMDThrottlingInvoker dell'SDK Amazon Athena Query Federation
-
throttle_initial_delay_ms: il ritardo iniziale della chiamata applicato dopo il primo evento di congestione. Il valore predefinito è 10 millisecondi.
-
throttle_max_delay_ms: il ritardo massimo tra le chiamate. Puoi derivare il TPS dividendolo per 1.000 ms. Il valore predefinito è 1000 millisecondi.
-
throttle_decrease_factor: il fattore in base al quale Athena riduce la frequenza delle chiamate. Il valore predefinito è 0.5
-
throttle_increase_ms: la velocità con cui Athena riduce il ritardo della chiamata. Il valore predefinito è 10 millisecondi.
Database e tabelle
Il connettore CloudWatch per Athena associa i LogGroups come schemi (ossia database) e ogni LogStream come una tabella. Il connettore inoltre mappa una visualizzazione all_log_streams speciale che contiene tutti i LogStream nel LogGroup. Questa visualizzazione consente di eseguire una query su tutti i log di un LogGroup alla volta anziché cercare in ogni LogStream singolarmente.
Ogni tabella mappata dal connettore CloudWatch per Athena ha il seguente schema. Questo schema corrisponde ai campi forniti da CloudWatch Logs.
-
log_stream: un
VARCHARche contiene il nome del LogStream da cui proviene la riga. -
time: un
INT64che contiene l'ora epoch in cui è stata generata la riga del log. -
message: un
VARCHARche contiene il messaggio di log.
Esempi
L'esempio seguente mostra come eseguire una query SELECT su un LogStream specificato.
SELECT * FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."log_stream_name" LIMIT 100
L'esempio seguente mostra come utilizzare la visualizzazione all_log_streams per eseguire una query su tutti i LogStreams in un LogGroup specificato.
SELECT * FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."all_log_streams" LIMIT 100
Autorizzazioni richieste
Consulta la sezione Policies del file athena-cloudwatch.yaml
-
Accesso in scrittura ad Amazon S3: per trasferire i risultati di query di grandi dimensioni, il connettore richiede l'accesso in scrittura a una posizione in Amazon S3.
-
Athena GetQueryExecution: il connettore utilizza questa autorizzazione per interrompersi rapidamente con esito negativo quando la query a monte di Athena è terminata.
-
CloudWatch Logs Read/Write: il connettore utilizza questa autorizzazione per leggere i dati del log e scrivere i relativi log di diagnostica.
Prestazioni
Il connettore CloudWatch per Athena tenta di ottimizzare le query su CloudWatch eseguendo in parallelo le scansioni dei flussi di log necessari per la query. Per determinati filtri dei periodi temporali, il pushdown dei predicati viene eseguito sia all'interno della funzione Lambda sia all'interno di CloudWatch Logs.
Per prestazioni ottimali, utilizza solo lettere minuscole per i nomi di gruppi di log e dei flussi di log. L'utilizzo di caratteri misti tra maiuscole e minuscole fa sì che il connettore esegua una ricerca senza distinzione tra maiuscole e minuscole, più impegnativa dal punto di vista computazionale.
Nota
Il connettore CloudWatch non supporta nomi di database in maiuscolo.
Query passthrough
Il connettore CloudWatchsupporta le query passthrough che utilizzano la sintassi delle queryCloudWatchLogs Insights. Per ulteriori informazioni su CloudWatch Logs Insights, consulta la pagina Analyzing Log Data with CloudWatch Logs Insights della Guida per l'utente di File di log Amazon CloudWatch.
Per creare query passthrough con CloudWatch, utilizzare la seguente sintassi:
SELECT * FROM TABLE( system.query( STARTTIME => 'start_time', ENDTIME => 'end_time', QUERYSTRING => 'query_string', LOGGROUPNAMES => 'log_group-names', LIMIT => 'max_number_of_results' ))
Nell'esempio seguente la query passthrough CloudWatch filtra per il campo duration quando non è uguale a 1000.
SELECT * FROM TABLE( system.query( STARTTIME => '1710918615308', ENDTIME => '1710918615972', QUERYSTRING => 'fields @duration | filter @duration != 1000', LOGGROUPNAMES => '/aws/lambda/cloudwatch-test-1', LIMIT => '2' ))
Informazioni sulla licenza
Il progetto del connettore CloudWatch per Amazon Athena è concesso in licenza ai sensi della Licenza Apache-2.0
Risorse aggiuntive
Per ulteriori informazioni su questo connettore, visita il sito corrispondente