Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
NCSA-Protokolldateiformat abfragen
IIS verwendet auch das NCSA-Protokollierungsformat
Das folgende Beispiel zeigt Daten im allgemeinen NCSA-Protokollformat, wie für IIS dokumentiert.
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
Eine Tabelle in Athena für IIS-NCSA-Webserverprotokolle erstellen
Für Ihre CREATE TABLE-Anweisung können Sie das Grok SerDe- und ein grok-Muster ähnlich dem für Apache-Webserver-Protokolle verwenden. Im Gegensatz zu Apache-Protokollen verwendet das grok-Muster %{DATA:user_id} für das dritte Feld anstelle von %{USERNAME:user_id}, um das Vorhandensein des umgekehrten Schrägstrichs in domain\user_id zu berücksichtigen. Weitere Informationen zur Verwendung von Grok SerDe finden Sie unter Writing Custom Classifiers im Developer Guide.AWS Glue
So erstellen Sie eine Tabelle in Athena für IIS-NCSA-Webserverprotokolle
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. -
Kopieren Sie die folgende DDL-Anweisung und fügen Sie sie in den Abfrage-Editor der Athena-Konsole ein: Ändern Sie die Werte in
LOCATION 's3://amzn-s3-demo-bucket/, um auf Ihre IIS-NCSA-Protokolle in Amazon S3 zu verweisen.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/'; -
Führen Sie die Abfrage in der Athena-Konsole aus, um die
iis_ncsa_logs-Tabelle zu registrieren. Wenn die Abfrage abgeschlossen ist, können Sie die Protokolle aus Athena abfragen.
Beispielauswahlabfragen für IIS-NCSA-Protokolle auswählen
Beispiel– Filterung nach 404-Fehlern
Die folgende Beispielabfrage wählt die Empfangszeit der Anforderung, den Text der Clientanforderung und den Serverstatuscode aus der iis_ncsa_logs-Tabelle aus. Die WHERE-Klausel filtert nach HTTP-Statuscode 404 (Seite nicht gefunden)
SELECT request_received_time, client_request, server_status FROM iis_ncsa_logs WHERE server_status = '404'
Das folgende Image zeigt die Ergebnisse der Abfrage im Athena-Abfrage-Editor.
Beispiel– Filtern nach erfolgreichen Anforderungen aus einer bestimmten Domäne
Die folgende Beispielabfrage wählt die Benutzer-ID, die Empfangszeit der Anforderung, den Text der Clientanforderung und den Serverstatuscode aus der iis_ncsa_logs-Tabelle aus. Die WHERE-Klausel filtert nach Anforderungen mit dem HTTP-Statuscode 200 (erfolgreich) von Benutzern in der AnyCompany-Domäne.
SELECT user_id, request_received_time, client_request, server_status FROM iis_ncsa_logs WHERE server_status = '200' AND user_id LIKE 'AnyCompany%'
Das folgende Image zeigt die Ergebnisse der Abfrage im Athena-Abfrage-Editor.