Comment puis-je analyser les journaux d'accès de mon Application Load Balancer à l'aide d'Athena ?

Date de la dernière mise à jour : 29/10/2020

Je souhaite analyser les journaux d'accès de mon Application Load Balancer. Comment puis-je faire cela avec Amazon Athena ?

Brève description

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. Lorsque vous souhaitez analyser les performances ou résoudre les problèmes 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 Application Load Balancer et les Classic Load Balancer, seuls les équilibreurs de charge d'application sont traités ici.

Résolution

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. Une bonne pratique consiste à créer la base de données dans la même région AWS que le compartiment S3.

create database alb_db

3.     Dans la base de données que vous avez créée à l'étape précédente, 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, s'affichent les données des journaux d'accès ALB.

5.    Utilisez l'Éditeur de requête pour exécuter des instructions SQL sur la table. Vous pouvez enregistrer les requêtes, afficher les requêtes précédentes ou télécharger les résultats de requêtes 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 colonnes et d'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'équilibreur de charge d'application et combien de fois ils ont accédé à l'équilibreur de charge d'application.

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'équilibreur de charge d'application 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)
comme prewarm_kilobytes de alb_log;

Lister toutes les cibles vers lesquelles l'équilibreur de charge d'application achemine du trafic, ainsi que le nombre de fois où il 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;

Listez le nombre de fois où un client a envoyé une demande à Application Load Balancer et a mis fin à la connexion à Application Load Balancer avant la fin du délai d'inactivité (erreur HTTP 460).

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

SELECT * from alb_log where elb_status_code = '460'

Listez le nombre de fois où une demande d'un 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’équilibreur de charge d'application 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)


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?