

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Interrogation des journaux Application Load Balancer
<a name="application-load-balancer-logs"></a>

Application Load Balancer est une option de répartition de charge pour Elastic Load Balancing qui permet la distribution du trafic dans un déploiement de microservices à l'aide de conteneurs. L'interrogation des journaux de l'Application Load Balancer vous permet de connaître la source du trafic et la latence, ainsi que les octets transférés vers et depuis les instances Elastic Load Balancing et les applications backend. Pour plus d’informations, consultez [Access logs for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html) et [Connection logs for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html) dans le *Guide d’utilisation des équilibreurs de charge Application Load Balancer*.

## Conditions préalables
<a name="application-load-balancer-logs-prerequisites"></a>
+ Activez la [journalisation des accès](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html) ou la [journalisation des connexions](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html) de sorte que les journaux Application Load Balancer puissent être enregistrés dans votre compartiment Amazon S3.
+ Une base de données pour contenir la table que vous allez créer pour Athena. Pour créer une base de données, vous pouvez utiliser l'Athena ou AWS Glue la console. Pour de plus amples informations, veuillez consulter [Création de bases de données dans Athena](creating-databases.md) dans ce guide ou [Utilisation des bases de données sur la console AWS glue](https://docs.aws.amazon.com/glue/latest/dg/console-databases.html) dans le *Guide du développeur AWS Glue *. 

**Topics**
+ [Conditions préalables](#application-load-balancer-logs-prerequisites)
+ [Création de la table des journaux d’accès ALB](create-alb-access-logs-table.md)
+ [Création de la table des journaux d’accès ALB dans Athena en utilisant la projection de partition](create-alb-access-logs-table-partition-projection.md)
+ [Exemples de requêtes pour les journaux d’accès ALB](query-alb-access-logs-examples.md)
+ [Création de la table des journaux de connexion ALB](create-alb-connection-logs-table.md)
+ [Création de la table des journaux de connexion ALB dans Athena en utilisant la projection de partition](create-alb-connection-logs-table-partition-projection.md)
+ [Exemples de requêtes pour les journaux de connexion ALB](query-alb-connection-logs-examples.md)
+ [Ressources supplémentaires](application-load-balancer-logs-additional-resources.md)

# Création de la table des journaux d’accès ALB
<a name="create-alb-access-logs-table"></a>

1. Copiez et collez l’instruction `CREATE TABLE` suivante dans l’éditeur de requêtes de la console Athena, puis modifiez-la selon vos besoins en matière d’entrée de journal. Pour plus d'informations sur le démarrage avec la console Athena, veuillez consulter la rubrique [Mise en route](getting-started.md). Remplacez le chemin indiqué dans la clause `LOCATION` par l’emplacement du dossier de vos journaux d’accès Amazon S3. Pour plus d’informations sur l’emplacement des fichiers journaux d’accès, consultez [Access log files](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-file-format) dans le *Guide d’utilisation des équilibreurs de charge Application Load Balancer*.

   Pour plus d’informations sur chaque champ des fichiers journaux, consultez la rubrique [Access log entries](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-entry-format) dans le *Guide d’utilisation des équilibreurs de charge Application Load Balancer*.
**Note**  
L’exemple d’instruction `CREATE TABLE` suivant inclut les colonnes récemment ajoutées `classification`, `classification_reason` et `conn_trace_id` (« ID de traçabilité » ou TID). Pour créer une table pour les journaux d’accès Application Load Balancer qui ne contiennent pas ces entrées, supprimez les colonnes correspondantes de l’instruction `CREATE TABLE` et modifiez l’expression régulière en conséquence. 

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS alb_access_logs (
               type string,
               time string,
               elb string,
               client_ip string,
               client_port int,
               target_ip string,
               target_port int,
               request_processing_time double,
               target_processing_time double,
               response_processing_time double,
               elb_status_code int,
               target_status_code string,
               received_bytes bigint,
               sent_bytes bigint,
               request_verb string,
               request_url string,
               request_proto string,
               user_agent string,
               ssl_cipher string,
               ssl_protocol string,
               target_group_arn string,
               trace_id string,
               domain_name string,
               chosen_cert_arn string,
               matched_rule_priority string,
               request_creation_time string,
               actions_executed string,
               redirect_url string,
               lambda_error_reason string,
               target_port_list string,
               target_status_code_list string,
               classification string,
               classification_reason string,
               conn_trace_id string
               )
               ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
               WITH SERDEPROPERTIES (
               'serialization.format' = '1',
               'input.regex' = 
           '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) (.*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-_]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" \"([^\\s]+?)\" \"([^\\s]+)\" \"([^ ]*)\" \"([^ ]*)\" ?([^ ]*)? ?( .*)?'
               )
               LOCATION 's3://amzn-s3-demo-bucket/access-log-folder-path/'
   ```
**Note**  
Nous suggérons que le modèle *`?( .*)?`* à la fin du paramètre `input.regex` reste toujours en place pour gérer les futures entrées de journaux au cas où de nouveaux champs de journaux ALB seraient ajoutés. 

1. Exécutez la requête dans la console Athena. Une fois que la requête est terminée, Athena enregistre la table `alb_access_logs`, de telle sorte que les données soient prêtes pour que vous puissiez émettre des requêtes.

# Création de la table des journaux d’accès ALB dans Athena en utilisant la projection de partition
<a name="create-alb-access-logs-table-partition-projection"></a>

Étant donné que les journaux d’accès ALB possèdent une structure connue dont vous pouvez spécifier le schéma de partition à l’avance, vous pouvez réduire le temps d’exécution des requêtes et automatiser la gestion des partitions en utilisant la fonctionnalité de projection de partition Athena. La projection des partitions ajoute automatiquement de nouvelles partitions à mesure que de nouvelles données sont ajoutées. Vous n'avez donc plus besoin d'ajouter manuellement des partitions à l'aide de la commande `ALTER TABLE ADD PARTITION`. 

L’exemple d’instruction `CREATE TABLE` suivant utilise automatiquement la projection de partition sur les journaux d’accès ALB à partir d’une date spécifiée jusqu’au moment présent pour une seule région AWS . L'instruction se base sur l'exemple de la section précédente, mais ajoute les clauses `PARTITIONED BY` et `TBLPROPERTIES` pour activer la projection de partition. Dans les clauses `LOCATION` et `storage.location.template`, remplacez les espaces réservés par des valeurs qui identifient l’emplacement du compartiment Amazon S3 de vos journaux d’accès ALB. Pour plus d’informations sur l’emplacement des fichiers journaux d’accès, consultez [Access log files](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-file-format) dans le *Guide d’utilisation des équilibreurs de charge Application Load Balancer*. Pour`projection.day.range`, remplacez*2022*/*01*/*01*par la date de début que vous souhaitez utiliser. Après avoir exécuté la requête avec succès, vous pouvez interroger la table. Vous n'avez pas besoin d'exécuter `ALTER TABLE ADD PARTITION` pour charger les partitions. Pour plus d’informations sur chaque champ des fichiers journaux, consultez [Access log entries](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-entry-format). 

```
CREATE EXTERNAL TABLE IF NOT EXISTS alb_access_logs (
            type string,
            time string,
            elb string,
            client_ip string,
            client_port int,
            target_ip string,
            target_port int,
            request_processing_time double,
            target_processing_time double,
            response_processing_time double,
            elb_status_code int,
            target_status_code string,
            received_bytes bigint,
            sent_bytes bigint,
            request_verb string,
            request_url string,
            request_proto string,
            user_agent string,
            ssl_cipher string,
            ssl_protocol string,
            target_group_arn string,
            trace_id string,
            domain_name string,
            chosen_cert_arn string,
            matched_rule_priority string,
            request_creation_time string,
            actions_executed string,
            redirect_url string,
            lambda_error_reason string,
            target_port_list string,
            target_status_code_list string,
            classification string,
            classification_reason string,
            conn_trace_id string
            )
            PARTITIONED BY
            (
             day STRING
            )
            ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
            WITH SERDEPROPERTIES (
            'serialization.format' = '1',
            'input.regex' = 
        '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) (.*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-_]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" \"([^\\s]+?)\" \"([^\\s]+)\" \"([^ ]*)\" \"([^ ]*)\" ?([^ ]*)? ?( .*)?'
            )
            LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/'
            TBLPROPERTIES
            (
             "projection.enabled" = "true",
             "projection.day.type" = "date",
             "projection.day.range" = "2022/01/01,NOW",
             "projection.day.format" = "yyyy/MM/dd",
             "projection.day.interval" = "1",
             "projection.day.interval.unit" = "DAYS",
             "storage.location.template" = "s3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/${day}"
            )
```

Pour plus d'informations sur la projection de partition, voir [Utilisation de la projection de partition avec Amazon Athena](partition-projection.md).

**Note**  
Nous suggérons que le modèle *?( .\$1)?* à la fin du paramètre `input.regex` reste toujours en place pour gérer les futures entrées de journaux au cas où de nouveaux champs de journaux ALB seraient ajoutés. 

# Exemples de requêtes pour les journaux d’accès ALB
<a name="query-alb-access-logs-examples"></a>

La requête suivante compte le nombre de demandes HTTP GET reçues par l'équilibreur de charge et regroupées par l'adresse IP du client:

```
SELECT COUNT(request_verb) AS
 count,
 request_verb,
 client_ip
FROM alb_access_logs
GROUP BY request_verb, client_ip
LIMIT 100;
```

Une autre requête indique les URLs visiteurs par les utilisateurs du navigateur Safari :

```
SELECT request_url
FROM alb_access_logs
WHERE user_agent LIKE '%Safari%'
LIMIT 10;
```

La requête suivante montre les enregistrements dont les valeurs de code d'état ELB sont supérieures ou égales à 500.

```
SELECT * FROM alb_access_logs
WHERE elb_status_code >= 500
```

L'exemple suivant montre comment analyser les journaux par `datetime` :

```
SELECT client_ip, sum(received_bytes) 
FROM alb_access_logs
WHERE parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') 
     BETWEEN parse_datetime('2018-05-30-12:00:00','yyyy-MM-dd-HH:mm:ss') 
     AND parse_datetime('2018-05-31-00:00:00','yyyy-MM-dd-HH:mm:ss') 
GROUP BY client_ip;
```

La requête suivante interroge la table qui utilise la projection de partitions pour tous les journaux d’accès ALB à partir du jour spécifié.

```
SELECT * 
FROM alb_access_logs 
WHERE day = '2022/02/12'
```

# Création de la table des journaux de connexion ALB
<a name="create-alb-connection-logs-table"></a>

1. Copiez et collez l’exemple d’instruction `CREATE TABLE` suivant dans l’éditeur de requêtes de la console Athena, puis modifiez-la selon vos besoins en matière d’entrée de journal. Pour plus d'informations sur le démarrage avec la console Athena, veuillez consulter la rubrique [Mise en route](getting-started.md). Remplacez le chemin indiqué dans la clause `LOCATION` par l’emplacement du dossier de vos journaux de connexion Amazon S3. Pour plus d’informations sur l’emplacement des fichiers journaux de connexion, consultez [Connection log files](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html#connection-log-file-format) dans le *Guide d’utilisation des équilibreurs de charge Application Load Balancer*. Pour plus d’informations sur chaque champ des fichiers journaux, consultez [Connection log entries](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html#connection-log-entry-format). 

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS alb_connection_logs (
            time string,
            client_ip string,
            client_port int,
            listener_port int,
            tls_protocol string,
            tls_cipher string,
            tls_handshake_latency double,
            leaf_client_cert_subject string,
            leaf_client_cert_validity string,
            leaf_client_cert_serial_number string,
            tls_verify_status string,
            conn_trace_id string
            ) 
            ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
            WITH SERDEPROPERTIES (
            'serialization.format' = '1',
            'input.regex' =
             '([^ ]*) ([^ ]*) ([0-9]*) ([0-9]*) ([A-Za-z0-9.-]*) ([^ ]*) ([-.0-9]*) \"([^\"]*)\" ([^ ]*) ([^ ]*) ([^ ]*) ?([^ ]*)?( .*)?'
            )
            LOCATION 's3://amzn-s3-demo-bucket/connection-log-folder-path/'
   ```

1. Exécutez la requête dans la console Athena. Une fois que la requête est terminée, Athena enregistre la table `alb_connection_logs`, de telle sorte que les données soient prêtes pour que vous puissiez émettre des requêtes.

# Création de la table des journaux de connexion ALB dans Athena en utilisant la projection de partition
<a name="create-alb-connection-logs-table-partition-projection"></a>

Étant donné que les journaux de connexion ALB possèdent une structure connue dont vous pouvez spécifier le schéma de partition à l’avance, vous pouvez réduire le temps d’exécution des requêtes et automatiser la gestion des partitions en utilisant la fonctionnalité de projection de partition Athena. La projection des partitions ajoute automatiquement de nouvelles partitions à mesure que de nouvelles données sont ajoutées. Vous n'avez donc plus besoin d'ajouter manuellement des partitions à l'aide de la commande `ALTER TABLE ADD PARTITION`. 

L’exemple d’instruction `CREATE TABLE` suivant utilise automatiquement la projection de partition sur les journaux de connexion ALB à partir d’une date spécifiée jusqu’au moment présent pour une seule région AWS . L'instruction se base sur l'exemple de la section précédente, mais ajoute les clauses `PARTITIONED BY` et `TBLPROPERTIES` pour activer la projection de partition. Dans les clauses `LOCATION` et `storage.location.template`, remplacez les espaces réservés par des valeurs qui identifient l’emplacement du compartiment Amazon S3 de vos journaux de connexion ALB. Pour plus d’informations sur l’emplacement des fichiers journaux de connexion, consultez [Connection log files](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html#connection-log-file-format) dans le *Guide d’utilisation des équilibreurs de charge Application Load Balancer*. Pour`projection.day.range`, remplacez*2023*/*01*/*01*par la date de début que vous souhaitez utiliser. Après avoir exécuté la requête avec succès, vous pouvez interroger la table. Vous n'avez pas besoin d'exécuter `ALTER TABLE ADD PARTITION` pour charger les partitions. Pour plus d’informations sur chaque champ des fichiers journaux, consultez [Connection log entries](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html#connection-log-entry-format).

```
CREATE EXTERNAL TABLE IF NOT EXISTS alb_connection_logs (
         time string,
         client_ip string,
         client_port int,
         listener_port int,
         tls_protocol string,
         tls_cipher string,
         tls_handshake_latency double,
         leaf_client_cert_subject string,
         leaf_client_cert_validity string,
         leaf_client_cert_serial_number string,
         tls_verify_status string,
         conn_trace_id string
         )
            PARTITIONED BY
            (
             day STRING
            )
            ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
            WITH SERDEPROPERTIES (
            'serialization.format' = '1',
            'input.regex' =
             '([^ ]*) ([^ ]*) ([0-9]*) ([0-9]*) ([A-Za-z0-9.-]*) ([^ ]*) ([-.0-9]*) \"([^\"]*)\" ([^ ]*) ([^ ]*) ([^ ]*) ?([^ ]*)?( .*)?'
            )
            LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/'
            TBLPROPERTIES
            (
             "projection.enabled" = "true",
             "projection.day.type" = "date",
             "projection.day.range" = "2023/01/01,NOW",
             "projection.day.format" = "yyyy/MM/dd",
             "projection.day.interval" = "1",
             "projection.day.interval.unit" = "DAYS",
             "storage.location.template" = "s3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/${day}"
            )
```

Pour plus d'informations sur la projection de partition, voir [Utilisation de la projection de partition avec Amazon Athena](partition-projection.md).

# Exemples de requêtes pour les journaux de connexion ALB
<a name="query-alb-connection-logs-examples"></a>

La requête suivante compte les occurrences pour lesquelles la valeur de `tls_verify_status` n’a pas été `'Success'`, regroupées par adresse IP de client :

```
SELECT DISTINCT client_ip, count() AS count FROM alb_connection_logs
WHERE tls_verify_status != 'Success'
GROUP BY client_ip
ORDER BY count() DESC;
```

La requête suivante recherche les occurrences pour lesquelles la valeur de `tls_handshake_latency` a été supérieure à 2 secondes dans la plage de temps spécifiée :

```
SELECT * FROM alb_connection_logs
WHERE 
  (
    parse_datetime(time, 'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') 
    BETWEEN 
    parse_datetime('2024-01-01-00:00:00', 'yyyy-MM-dd-HH:mm:ss') 
    AND 
    parse_datetime('2024-03-20-00:00:00', 'yyyy-MM-dd-HH:mm:ss') 
  ) 
  AND 
    (tls_handshake_latency >= 2.0);
```

# Ressources supplémentaires
<a name="application-load-balancer-logs-additional-resources"></a>

Pour plus d’informations sur l’utilisation des journaux ALB, consultez les ressources suivantes.
+ [Comment analyser mes journaux d'accès Application Load Balancer avec Amazon Athena ?](https://repost.aws/knowledge-center/athena-analyze-access-logs) dans le *Centre de connaissances AWS *.
+ Pour plus d'informations sur les codes d'état HTTP dans Elastic Load Balancing, consultez la section [Résolution des problèmes de vos Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html) dans le *Guide de l'utilisateur des Application Load Balancers*.
+ [Cataloguez et analysez les journaux d'Application Load Balancer de manière plus efficace grâce à des classificateurs AWS Glue personnalisés et à Amazon Athena sur](https://aws.amazon.com/blogs/big-data/catalog-and-analyze-application-load-balancer-logs-more-efficiently-with-aws-glue-custom-classifiers-and-amazon-athena/) *le Big Data Blog.AWS *