

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 Internet Information Server (IIS) stockés dans Amazon S3
<a name="querying-iis-logs"></a>

Vous pouvez utiliser Amazon Athena pour interroger les journaux des serveurs web de Microsoft Internet Information Services (IIS) stockés dans votre compte Simple Storage Service (Amazon S3). Bien que IIS utilise [différents](https://docs.microsoft.com/en-us/previous-versions/iis/6.0-sdk/ms525807(v%3Dvs.90)) formats de fichiers journaux, cette rubrique vous montre comment créer des schémas de table pour interroger les journaux des formats de fichiers journaux étendus W3C et IIS à partir d'Athena.

Étant donné que les formats de fichier W3C Extended et IIS utilisent des séparateurs à caractère unique (espaces et virgules, respectivement) et que les valeurs ne sont pas placées entre guillemets, vous pouvez utiliser le [LazySimpleSerDe](lazy-simple-serde.md)pour créer des tables Athena pour ces formats.

**Topics**
+ [Interrogation du format de fichier journal étendu W3C](querying-iis-logs-w3c-extended-log-file-format.md)
+ [Interrogation du format de fichier journal IIS](querying-iis-logs-iis-log-file-format.md)
+ [Interrogation du format de fichier journal NCSA](querying-iis-logs-ncsa-log-file-format.md)

# Interrogation du format de fichier journal étendu W3C
<a name="querying-iis-logs-w3c-extended-log-file-format"></a>

Le format de données du fichier journal [étendu W3C](https://docs.microsoft.com/en-us/windows/win32/http/w3c-logging) comporte des champs séparés par des espaces. Les champs qui apparaissent dans les journaux étendus W3C sont déterminés par l'administrateur du serveur web qui choisit les champs à inclure dans les journaux. L'exemple suivant de données de journal comporte les champs `date, time`, `c-ip`, `s-ip`, `cs-method`, `cs-uri-stem`, `sc-status`, `sc-bytes`, `cs-bytes`, `time-taken` et `cs-version`.

```
2020-01-19 22:48:39 203.0.113.5 198.51.100.2 GET /default.html 200 540 524 157 HTTP/1.0
2020-01-19 22:49:40 203.0.113.10 198.51.100.12 GET /index.html 200 420 324 164 HTTP/1.0
2020-01-19 22:50:12 203.0.113.12 198.51.100.4 GET /image.gif 200 324 320 358 HTTP/1.0
2020-01-19 22:51:44 203.0.113.15 198.51.100.16 GET /faq.html 200 330 324 288 HTTP/1.0
```

## Création d’une table dans Athena pour les journaux étendus W3C
<a name="querying-iis-logs-creating-a-table-in-athena-for-w3c-extended-logs"></a>

Avant de pouvoir interroger vos journaux étendus W3C, vous devez créer un schéma de table pour qu'Athena puisse lire les données des journaux.

**Créer une table dans Athena pour les journaux étendus W3C**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Collez une instruction DDL comme la suivante dans la console Athena, en tenant compte des points suivants :

   1. Ajoutez ou supprimez les colonnes dans l'exemple pour qu'elles correspondent aux champs des journaux que vous voulez interroger.

   1. Les noms de colonne dans le format de fichier journal étendu W3C contiennent des traits d'union (`-`). Toutefois, conformément aux [conventions de dénomination Athena](tables-databases-columns-names.md), l'instruction `CREATE TABLE` en exemple les remplace par des traits de soulignement (`_`).

   1. Pour spécifier le délimiteur espace, utilisez `FIELDS TERMINATED BY ' '`.

   1. Modifiez les valeurs dans `LOCATION 's3://amzn-s3-demo-bucket/w3c-log-folder/'` pour pointer vers vos journaux étendus W3C dans Simple Storage Service (Amazon S3).

   ```
   CREATE EXTERNAL TABLE `iis_w3c_logs`( 
     date_col string, 
     time_col string, 
     c_ip string,
     s_ip string,
     cs_method string, 
     cs_uri_stem string, 
     sc_status string,
     sc_bytes string,
     cs_bytes string,
     time_taken string,
     cs_version string
     ) 
   ROW FORMAT DELIMITED  
     FIELDS TERMINATED BY ' '  
   STORED AS INPUTFORMAT  
     'org.apache.hadoop.mapred.TextInputFormat'  
   OUTPUTFORMAT  
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
   LOCATION   's3://amzn-s3-demo-bucket/w3c-log-folder/'
   ```

1. Exécutez la requête dans la console Athena pour enregistrer la table `iis_w3c_logs`. Une fois la requête terminée, vous pouvez interroger les journaux à partir d'Athena.

## Exemple de requête de sélection de journal étendu W3C
<a name="querying-iis-logs-example-w3c-extended-log-select-query"></a>

L'exemple de requête suivant sélectionne la date, l'heure, la cible de la demande et le temps pris pour la demande à partir de la table `iis_w3c_logs`. La clause `WHERE` filtre les cas dans lesquels la méthode HTTP est `GET` et le code d'état HTTP est `200` (réussite).

```
SELECT date_col, time_col, cs_uri_stem, time_taken
FROM iis_w3c_logs
WHERE cs_method = 'GET' AND sc_status = '200'
```

L'image suivante montre les résultats de la requête dans l'éditeur de requête Athena.

![\[Exemple de résultats de requête dans Athena de fichiers journaux étendus W3C stockés dans Simple Storage Service (Amazon S3).\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/querying-iis-logs-1.png)


## Combinaison des champs de date et d’heure
<a name="querying-iis-logs-example-w3c-extended-log-combining-date-and-time"></a>

Les champs `date` et `time` délimités par des espaces sont des entrées distinctes dans les données de la source du journal, mais vous pouvez les combiner en un horodatage si vous le souhaitez. Utilisez les fonctions [concat()](https://prestodb.io/docs/current/functions/string.html#concat) et [date\$1parse()](https://prestodb.io/docs/current/functions/datetime.html#date_parse) dans une requête [SELECT](select.md) ou [CREATE TABLE AS SELECT](create-table-as.md) pour concaténer et convertir les colonnes de date et d’heure au format d’horodatage. L'exemple suivant utilise une requête CTAS pour créer une nouvelle table avec une colonne `derived_timestamp`.

```
CREATE TABLE iis_w3c_logs_w_timestamp AS
SELECT 
  date_parse(concat(date_col,' ', time_col),'%Y-%m-%d %H:%i:%s') as derived_timestamp, 
  c_ip, 
  s_ip, 
  cs_method, 
  cs_uri_stem, 
  sc_status, 
  sc_bytes, 
  cs_bytes, 
  time_taken, 
  cs_version
FROM iis_w3c_logs
```

Une fois la table créée, vous pouvez interroger directement la nouvelle colonne d'horodatage, comme dans l'exemple suivant.

```
SELECT derived_timestamp, cs_uri_stem, time_taken
FROM iis_w3c_logs_w_timestamp
WHERE cs_method = 'GET' AND sc_status = '200'
```

L'image suivante montre les résultats de la requête.

![\[Résultats de requête du fichier journal étendu W3C sur une table avec une colonne d'horodatage dérivée.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/querying-iis-logs-1a.png)


# Interrogation du format de fichier journal IIS
<a name="querying-iis-logs-iis-log-file-format"></a>

Contrairement au format étendu W3C, le [format de fichier journal IIS](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc728311(v%3dws.10)) comporte un ensemble fixe de champs et inclut une virgule comme délimiteur. LazySimpleSerDe Traite la virgule comme le délimiteur et l'espace après la virgule comme le début du champ suivant.

L'exemple suivant montre des données types dans le format de fichier journal IIS.

```
203.0.113.15, -, 2020-02-24, 22:48:38, W3SVC2, SERVER5, 198.51.100.4, 254, 501, 488, 200, 0, GET, /index.htm, -, 
203.0.113.4, -, 2020-02-24, 22:48:39, W3SVC2, SERVER6, 198.51.100.6, 147, 411, 388, 200, 0, GET, /about.html, -, 
203.0.113.11, -, 2020-02-24, 22:48:40, W3SVC2, SERVER7, 198.51.100.18, 170, 531, 468, 200, 0, GET, /image.png, -, 
203.0.113.8, -, 2020-02-24, 22:48:41, W3SVC2, SERVER8, 198.51.100.14, 125, 711, 868, 200, 0, GET, /intro.htm, -,
```

## Création d’une table dans Athena pour les fichiers journaux IIS
<a name="querying-iis-logs-creating-a-table-in-athena-for-iis-log-files"></a>

Pour interroger les journaux au format de fichier journal IIS dans Simple Storage Service (Amazon S3), vous devez d'abord créer un schéma de table afin qu'Athena puisse lire les données du journal.

**Création d'une table dans Athena pour les journaux au format de fichier journal IIS**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Collez l'instruction DDL suivante dans la console Athena, en tenant compte des points suivants :

   1. Pour spécifier le délimiteur virgule, utilisez `FIELDS TERMINATED BY ','`.

   1. Modifiez les valeurs dans LOCATION 's3://amzn-s3-demo-bucket/ *iis-log-file-folder* /' pour pointer vers vos fichiers journaux au format journal IIS dans Amazon S3.

   ```
   CREATE EXTERNAL TABLE `iis_format_logs`(
   client_ip_address string,
   user_name string,
   request_date string,
   request_time string,
   service_and_instance string,
   server_name string,
   server_ip_address string,
   time_taken_millisec string,
   client_bytes_sent string,
   server_bytes_sent string,
   service_status_code string,
   windows_status_code string,
   request_type string,
   target_of_operation string,
   script_parameters string
      )
   ROW FORMAT DELIMITED
     FIELDS TERMINATED BY ','
   STORED AS INPUTFORMAT
     'org.apache.hadoop.mapred.TextInputFormat'
   OUTPUTFORMAT
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
     's3://amzn-s3-demo-bucket/iis-log-file-folder/'
   ```

1. Exécutez la requête dans la console Athena pour enregistrer la table `iis_format_logs`. Une fois la requête terminée, vous pouvez interroger les journaux à partir d'Athena.

## Exemple de requête de sélection du format de journal IIS
<a name="querying-iis-logs-example-iis-log-format-select-query"></a>

L'exemple de requête suivant sélectionne la date de la demande, l'heure de la demande, la cible de la demande et le temps pris en millisecondes à partir de la table `iis_format_logs`. La clause `WHERE` filtre les cas dans lesquels le type de requête est `GET` et le code d'état HTTP est `200` (réussite). Dans la requête, notez que les espaces de tête dans `' GET'` et `' 200'` sont nécessaires pour que la requête réussisse. 

```
SELECT request_date, request_time, target_of_operation, time_taken_millisec
FROM iis_format_logs
WHERE request_type = ' GET' AND service_status_code = ' 200'
```

L'image suivante montre les résultats de la requête sur l'échantillon de données.

![\[Exemple de résultats de requête dans Athena sur les fichiers journaux au format IIS stockés dans Simple Storage Service (Amazon S3).\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/querying-iis-logs-2.png)


# Interrogation du format de fichier journal NCSA
<a name="querying-iis-logs-ncsa-log-file-format"></a>

IIS utilise également le format de [Journalisation NCSA](https://docs.microsoft.com/en-us/windows/win32/http/ncsa-logging), qui comporte un nombre fixe de champs au format texte ASCII séparés par des espaces. La structure est similaire au format de journal commun utilisé pour les journaux d'accès Apache. Les champs du format de données du journal commun NCSA comprennent l'adresse IP du client, l'ID du client (généralement non utilisé), l'ID de l'utilisateur du domaine, l'horodatage de la demande reçue, le texte de la demande du client, le code d'état du serveur et la taille de l'objet renvoyé au client.

L'exemple suivant montre des données au format de journal commun NCSA tel que documenté pour IIS.

```
198.51.100.7 - ExampleCorp\Li [10/Oct/2019:13:55:36 -0700] "GET /logo.gif HTTP/1.0" 200 232
198.51.100.14 - AnyCompany\Jorge [24/Nov/2019:10:49:52 -0700] "GET /index.html HTTP/1.1" 200 2165
198.51.100.22 - ExampleCorp\Mateo [27/Dec/2019:11:38:12 -0700] "GET /about.html HTTP/1.1" 200 1287
198.51.100.9 - AnyCompany\Nikki [11/Jan/2020:11:40:11 -0700] "GET /image.png HTTP/1.1" 404 230
198.51.100.2 - ExampleCorp\Ana [15/Feb/2019:10:12:22 -0700] "GET /favicon.ico HTTP/1.1" 404 30
198.51.100.13 - AnyCompany\Saanvi [14/Mar/2019:11:40:33 -0700] "GET /intro.html HTTP/1.1" 200 1608
198.51.100.11 - ExampleCorp\Xiulan [22/Apr/2019:10:51:34 -0700] "GET /group/index.html HTTP/1.1" 200 1344
```

## Création d’une table dans Athena pour les journaux IIS NCSA
<a name="querying-iis-logs-ncsa-creating-a-table-in-athena"></a>

Pour votre instruction `CREATE TABLE`, vous pouvez utiliser le SerDe [Grok SerDe](grok-serde.md) et un motif Grok similaire à celui utilisé pour les [journaux du serveur web Apache](querying-apache-logs.md). Contrairement aux journaux Apache, le motif Grok utilise `%{DATA:user_id}` pour le troisième champ au lieu de `%{USERNAME:user_id}` pour tenir compte de la présence de la barre oblique inverse dans `domain\user_id`. *Pour plus d'informations sur l'utilisation du Grok SerDe, consultez la section [Écrire des classificateurs personnalisés Grok](https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-grok) dans le Guide du AWS Glue développeur.*

**Création d'une table dans Athena pour les journaux de serveur web NCSA IIS**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Collez l'instruction DDL suivante dans l'éditeur de requête Athena. Modifiez les valeurs dans `LOCATION 's3://amzn-s3-demo-bucket/iis-ncsa-logs/'` pour pointer vers vos journaux NCSA IIS dans Simple Storage Service (Amazon S3).

   ```
   CREATE EXTERNAL TABLE iis_ncsa_logs(
     client_ip string,
     client_id string,
     user_id string,
     request_received_time string,
     client_request string,
     server_status string,
     returned_obj_size string
     )
   ROW FORMAT SERDE
      'com.amazonaws.glue.serde.GrokSerDe'
   WITH SERDEPROPERTIES (
      'input.format'='^%{IPV4:client_ip} %{DATA:client_id} %{DATA:user_id} %{GREEDYDATA:request_received_time} %{QUOTEDSTRING:client_request} %{DATA:server_status} %{DATA: returned_obj_size}$'
      )
   STORED AS INPUTFORMAT
      'org.apache.hadoop.mapred.TextInputFormat'
   OUTPUTFORMAT
      'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
      's3://amzn-s3-demo-bucket/iis-ncsa-logs/';
   ```

1. Exécutez la requête dans la console Athena pour enregistrer la table `iis_ncsa_logs`. Une fois la requête terminée, vous pouvez interroger les journaux à partir d'Athena.

## Exemple de sélection de requêtes pour les journaux IIS NCSA
<a name="querying-iis-logs-ncsa-example-select-queries"></a>

**Example – Filtrage des erreurs 404**  
L'exemple de requête suivant sélectionne l'heure de réception de la demande, le texte de la demande du client et le code d'état du serveur à partir de la table `iis_ncsa_logs`. La clause `WHERE` filtre le code d'état HTTP `404` (page non trouvée).  

```
SELECT request_received_time, client_request, server_status
FROM iis_ncsa_logs
WHERE server_status = '404'
```
L'image suivante montre les résultats de la requête dans l'éditeur de requête Athena.  

![\[Interrogation d'un journal NCSA IIS à partir d'Athena pour les entrées HTTP 404.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/querying-iis-logs-3.png)


**Example – Filtrage des requêtes réussies en provenance d'un domaine particulier**  
L'exemple de requête suivant sélectionne l'ID de l'utilisateur, l'heure de réception de la demande, le texte de la demande du client et le code d'état du serveur à partir de la table `iis_ncsa_logs`. La clause `WHERE` filtre les requêtes avec le code d'état HTTP `200` (réussite) provenant d'utilisateurs du domaine `AnyCompany`.  

```
SELECT user_id, request_received_time, client_request, server_status
FROM iis_ncsa_logs
WHERE server_status = '200' AND user_id LIKE 'AnyCompany%'
```
L'image suivante montre les résultats de la requête dans l'éditeur de requête Athena.  

![\[Interrogation d'un journal NCSA IIS à partir d'Athena pour les entrées HTTP 200.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/querying-iis-logs-4.png)
