Format du fichier NCSA journal des requêtes - Amazon Athena

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.

Format du fichier NCSA journal des requêtes

IISutilise également le format de NCSAjournalisation, qui comporte un nombre fixe de champs au format ASCII texte 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 de journal NCSA courant incluent l'adresse IP du client, l'identifiant client (généralement peu utilisé), le domaine \ l'identifiant utilisateur, l'horodatage de la demande reçue, le texte de la demande client, le code d'état du serveur et la taille de l'objet renvoyé au client.

L'exemple suivant montre les données dans le format de journal NCSA courant tel que documenté pourIIS.

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éer une table dans Athena pour les journaux IIS NCSA

Pour votre instruction CREATE TABLE, vous pouvez utiliser le SerDe Grok SerDe et un motif Grok similaire à celui utilisé pour les journaux du serveur web Apache. 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 dans le Guide du AWS Glue développeur.

Pour créer une table dans Athena pour les journaux du serveur IIS NCSA Web
  1. Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/.

  2. Collez l'DDLinstruction suivante dans l'éditeur de requêtes Athena. Modifiez les valeurs LOCATION 's3://amzn-s3-demo-bucket/iis-ncsa-logs/' pour qu'elles pointent vers vos IIS NCSA journaux dans 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/';
  3. 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 requêtes de sélection pour les IIS NCSA journaux

Exemple – 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 WHERE clause filtre le code d'HTTPétat 404 (page introuvable).

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 IIS NCSA journal auprès d'Athéna HTTP 404 pour obtenir des entrées.
Exemple – 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 WHERE clause filtre les demandes avec un code d'HTTPétat 200 (réussi) émanant d'utilisateurs du AnyCompany domaine.

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 IIS NCSA journal auprès d'Athéna HTTP 200 pour obtenir des entrées.