Je dois analyser mes journaux d'accès pour mon équilibreur de charge. Comment puis-je faire cela avec Amazon Athena ?

Par défaut, Elastic Load Balancing n'active pas la journalisation d'accès. Lorsque vous activez la journalisation d'accès, vous devez spécifier un compartiment Amazon Simple Storage Service (Amazon S3). Tous les journaux d'accès d'Application Load Balancer et de Classic Load Balancer sont stockés dans ce compartiment S3. Ensuite, lorsque vous souhaitez analyser les performances de votre équilibreur de charge, vous pouvez utiliser Athena pour analyser les journaux d'accès dans S3.

Remarque : Bien que vous puissiez utiliser Athena pour analyser les journaux d'accès pour les équilibreurs de charge d'application et les équilibreurs de charge classiques, seuls les équilibreurs de charge d'application sont traités ici.  

Pour analyser les journaux d'accès dans Athena, créez une base de données et une table.

1.    Ouvrez la console Athena.

2.    Dans l'Éditeur de requête, exécutez une commande similaire à ce qui suit pour créer une base de données.
Remarque : Une bonne pratique consiste à créer la base de données dans la même région AWS que votre compartiment S3.

create database alb_db

3.    Dans la base de données que vous avez créée à l'étape 2, créez une table pour les journaux ALB.

4.    Sous Tables dans le volet de gauche, choisissez Aperçu de la table avec le bouton de menu en regard du nom de la table. Dans la fenêtre Résultats, vous devriez voir les données des journaux d'accès ALB. Cela signifie que vous avez créé avec succès la table Athena et que vous pouvez maintenant interroger les journaux d'accès ALB.

5.    Utilisez l'éditeur de requête pour exécuter des instructions SQL sur la table que vous avez créée à l'étape 3. Vous pouvez enregistrer des requêtes, voir des requêtes précédentes ou télécharger des résultats de requête au format CSV.

Exemples de requêtes

Dans les exemples ci-dessous, le nom de la table est alb_log. Modifiez le nom de la table, les valeurs de colonne et autres variables en fonction de votre requête.

Action Requête

Afficher les 100 premières entrées de journal d'accès par ordre chronologique.

Cas d'utilisation : analyse et résolution de problèmes

SELECT *
FROM alb_log
ORDER by time ASC
LIMIT 100;

Lister toutes les adresses IP client qui ont accédé à l'ALB, ainsi que le nombre d'accès.

Cas d'utilisation : analyse et résolution de problèmes

SELECT distinct client_ip, count() as count from alb_log
GROUP by client_ip
ORDER by count() DESC;

Lister la quantité moyenne de données (en kilo-octets) passant par l'ALB dans des paires requête/réponse.

Cas d'utilisation : analyse et résolution de problèmes

SELECT (avg(sent_bytes)/1000.0 + avg(received_bytes)/1000.0)
as prewarm_kilobytes from alb_log;

Lister toutes les cibles vers lesquelles l'ALB achemine du trafic, ainsi que le nombre de fois où ALB a acheminé des demandes vers chaque cible, par distribution de pourcentage.

Cas d'utilisation : identification de déséquilibre potentiel du trafic cible

SELECT target_ip, (Count(target_ip)* 100.0 / (Select Count(*) From alb_log))
as backend_traffic_percentage
FROM alb_log
GROUP by target_ip
ORDER By count() DESC;

Lister le nombre de fois où un client a envoyé une demande à l'ALB et a mis fin à la connexion à l'ALB avant que le délai d'inactivité ALB soit écoulé (erreur HTTP 460).

Cas d'utilisation : résolution des erreurs HTTP 460

SELECT * from alb_log where elb_status_code = '460'

Lister le nombre de fois où une demande client n'a pas été acheminée car la règle d'écouteur a transmis la demande à un groupe cible vide (erreur HTTP 503).

Cas d'utilisation : résolution des erreurs HTTP 503

SELECT * from alb_log where elb_status_code = '503'

Lister les clients par ordre décroissant, selon le nombre de fois où chaque client a visité une URL spécifiée.

Cas d'utilisation : analyse des modèles du trafic

SELECT client_ip, elb, request_url, count(*) as count from alb_log
GROUP by client_ip, elb, request_url
ORDER by count DESC;

Lister les 10 URL auxquelles les utilisateurs de Firefox ont accédé le plus souvent, par ordre décroissant.

Cas d'utilisation : analyse des modèles et de la distribution du trafic

SELECT request_url, user_agent, count(*) as count
FROM alb_log
WHERE user_agent LIKE '%Firefox%'
GROUP by request_url, user_agent
ORDER by count(*) DESC
LIMIT 10;

Lister les clients par ordre décroissant, selon la quantité de données (en méga-octets) envoyée dans les demandes à l'ALB par chaque client.

Cas d'utilisation : analyse des modèles et de la distribution du trafic

SELECT client_ip, sum(received_bytes/1000000.0) as client_datareceived_megabytes
FROM alb_log
GROUP by client_ip
ORDER by client_datareceived_megabytes DESC;

Lister chaque fois où, dans une plage de dates spécifiée, le temps de traitement cible a été supérieur à 5 secondes.

Cas d'utilisation : résolution des erreurs de latence pour une période spécifiée

SELECT * from alb_log
WHERE (parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z')
     BETWEEN parse_datetime('2018-08-08-00:00:00','yyyy-MM-dd-HH:mm:ss')
     AND parse_datetime('2018-08-08-02:00:00','yyyy-MM-dd-HH:mm:ss'))
AND (target_processing_time >= 5.0)


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 20/12/2018