Connecteur Amazon Athena pour CloudWatch
Le connecteur Amazon Athena CloudWatch permet à Amazon Athena de communiquer avec CloudWatch afin que vous puissiez requêter vos données de journal avec SQL.
Ce connecteur n’utilise pas les connexions Glue pour centraliser les propriétés de configuration dans Glue. La configuration de la connexion s’effectue via Lambda.
Le connecteur mappe vos LogGroups en tant que schémas et chaque LogStream en tant que table. Le connecteur mappe également une vue all_log_streams spéciale qui contient tous les LogStreams du LogGroup. Cette vue vous permet d'interroger tous les journaux d'un LogGroup à la fois au lieu d'effectuer une recherche dans chaque LogStream individuellement.
Prérequis
Déployez le connecteur sur votre Compte AWS à l’aide de la console Athena ou du AWS Serverless Application Repository. Pour plus d’informations, consultez Création d’une connexion à une source de données ou Utilisation d’AWS Serverless Application Repository pour déployer un connecteur de source de données.
Paramètres
Utilisez les paramètres de cette section pour configurer le connecteur CloudWatch.
Nous vous recommandons de configurer un connecteur CloudWatch en utilisant un objet des connexions Glue. Pour ce faire, définissez la variable d’environnement glue_connection du connecteur CloudWatch Lambda sur le nom de la connexion Glue à utiliser.
Propriétés des connexions Glue
Utilisez la commande suivante afin d’obtenir le schéma d’un objet de connexion Glue. Ce schéma contient tous les paramètres que vous pouvez utiliser pour contrôler votre connexion.
aws glue describe-connection-type --connection-type CLOUDWATCH
Propriétés d’environnement Lambda
-
glue_connection – Spécifie le nom de la connexion Glue associée au connecteur fédéré.
Note
-
Tous les connecteurs qui utilisent des connexions Glue doivent utiliser AWS Secrets Manager pour stocker les informations d’identification.
-
Le connecteur CloudWatch créé à l’aide des connexions Glue ne prend pas en charge l’utilisation d’un gestionnaire de multiplexage.
-
Le connecteur CloudWatch créé à l’aide des connexions Glue prend uniquement en charge
ConnectionSchemaVersion2.
-
spill_bucket – Spécifie le compartiment Amazon S3 pour les données qui dépassent les limites des fonctions Lambda.
-
spill_prefix – (Facultatif) Par défaut, il s’agit d’un sous-dossier dans le
spill_bucketspécifié appeléathena-federation-spill. Nous vous recommandons de configurer un cycle de vie de stockage Amazon S3 à cet endroit pour supprimer les déversements supérieurs à un nombre de jours ou d’heures prédéterminé. -
spill_put_request_headers – (Facultatif) Une carte codée au format JSON des en-têtes et des valeurs des demandes pour la demande
putObjectAmazon S3 utilisée pour le déversement (par exemple,{"x-amz-server-side-encryption" : "AES256"}). Pour les autres en-têtes possibles, consultez PutObject dans la Référence d'API Amazon Simple Storage Service. -
kms_key_id – (Facultatif) Par défaut, toutes les données déversées vers Amazon S3 sont chiffrées à l'aide du mode de chiffrement authentifié AES-GCM et d'une clé générée de manière aléatoire. Pour que votre fonction Lambda utilise des clés de chiffrement plus puissantes générées par KMS, comme
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331, vous pouvez spécifier l’ID d’une clé KMS. -
disable_spill_encryption – (Facultatif) Lorsque la valeur est définie sur
True, le chiffrement des déversements est désactivé. La valeur par défaut estFalseafin que les données déversées vers S3 soient chiffrées à l’aide d’AES-GCM, soit à l’aide d’une clé générée de manière aléatoire soit à l’aide de KMS pour générer des clés. La désactivation du chiffrement des déversements peut améliorer les performances, surtout si votre lieu de déversement utilise le chiffrement côté serveur.
Le connecteur prend également en charge le contrôle de congestion AIMDThrottlingInvoker du kit SDK Amazon Athena Query Federation
-
throttle_initial_delay_ms – Le délai d’appel initial appliqué après le premier événement de congestion. La valeur par défaut est de 10 millisecondes.
-
throttle_max_delay_ms – Le délai maximal entre les appels. Vous pouvez obtenir le TPS en le divisant en 1 000 ms. La valeur par défaut est de 1 000 millisecondes.
-
throttle_dimine_factor – Le facteur par lequel Athena réduit le taux d’appels. La valeur par défaut est 0,5.
-
throttle_increase_ms – La vitesse à laquelle Athena réduit le délai d’appel. La valeur par défaut est de 10 millisecondes.
Bases de données et tables
Le connecteur Athena CloudWatch mappe vos LogGroups en tant que schémas (c’est-à-dire des bases de données) et chaque LogStream en tant que table. Le connecteur mappe également une vue all_log_streams spéciale qui contient tous les LogStreams du LogGroup. Cette vue vous permet d'interroger tous les journaux d'un LogGroup à la fois au lieu d'effectuer une recherche dans chaque LogStream individuellement.
Chaque table mappée par le connecteur Athena CloudWatch possède le schéma suivant. Ce schéma correspond aux champs fournis par CloudWatch Logs.
-
log_stream – Un
VARCHARqui contient le nom du LogStream d’où provient la ligne. -
time (temps) – Un
INT64qui contient l’heure à laquelle la ligne de journal a été générée. -
message – Un
VARCHARqui contient le message du journal.
Exemples
L’exemple suivant montre comment exécuter une requête SELECT sur un LogStream spécifié.
SELECT * FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."log_stream_name" LIMIT 100
L’exemple suivant montre comment utiliser la vue all_log_streams pour exécuter une requête sur tous les LogStreams dans un LogGroup spécifié.
SELECT * FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."all_log_streams" LIMIT 100
Autorisations nécessaires
Pour plus de détails sur les politiques IAM requises par ce connecteur, reportez-vous à la section Policies du fichier athena-cloudwatch.yaml
-
Amazon S3 write access (Accès en écriture Amazon S3) – Le connecteur nécessite un accès en écriture à un emplacement dans Amazon S3 pour déverser les résultats à partir de requêtes volumineuses.
-
Athena GetQueryExecution – Le connecteur utilise cette autorisation pour aboutir à un échec rapide lorsque la requête Athena en amont est terminée.
-
CloudWatch Logs Read/Write (Lecture/écriture CloudWatch Logs) – Le connecteur utilise cette autorisation pour lire les données de votre journal et pour écrire ses journaux de diagnostic.
Performances
Le connecteur Athena CloudWatch tente d’optimiser les requêtes par rapport à CloudWatch en parallélisant les analyses des flux de journaux nécessaires pour votre requête. Pour certains filtres de période la poussée des prédicats est effectuée à la fois dans la fonction Lambda et dans CloudWatch Logs.
Pour des performances optimales, n'utilisez que des minuscules pour vos noms de groupes de journaux et de flux de journaux. L'utilisation d'une casse mixte oblige le connecteur à effectuer une recherche insensible à la casse, ce qui demande plus de temps de calcul.
Note
Le connecteur CloudWatch ne prend pas en charge les noms de base de données en majuscules.
Requêtes de transmission
Le connecteur CloudWatch prend en charge les requêtes de transmission qui utilisent la syntaxe de requête CloudWatch Logs Insights. Pour plus d’informations sur CloudWatch Logs Insights, consultez Analyzing log data with CloudWatch Logs Insights dans le Guide d’utilisation d’Amazon CloudWatch Logs.
Pour créer des requêtes de transmission avec CloudWatch, utilisez la syntaxe suivante :
SELECT * FROM TABLE( system.query( STARTTIME => 'start_time', ENDTIME => 'end_time', QUERYSTRING => 'query_string', LOGGROUPNAMES => 'log_group-names', LIMIT => 'max_number_of_results' ))
L’exemple de requête de transmission CloudWatch ci-dessous filtre le champ duration lorsqu’il n’est pas égal à 1 000.
SELECT * FROM TABLE( system.query( STARTTIME => '1710918615308', ENDTIME => '1710918615972', QUERYSTRING => 'fields @duration | filter @duration != 1000', LOGGROUPNAMES => '/aws/lambda/cloudwatch-test-1', LIMIT => '2' ))
Informations de licence
Le projet de connecteur CloudWatch Amazon Athena est concédé sous licence dans le cadre de la licence Apache-2.0
Ressources supplémentaires
Pour plus d'informations sur ce connecteur, consultez le site correspondant