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
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
Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/
. -
Collez l'DDLinstruction suivante dans l'éditeur de requêtes Athena. Modifiez les valeurs
LOCATION 's3://amzn-s3-demo-bucket/
pour qu'elles pointent vers vos IIS NCSA journaux dans Amazon S3.iis-ncsa-logs
/'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
/'; -
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.
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.