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.
Format der NCSA Protokolldatei abfragen
IISverwendet auch das NCSAProtokollierungsformat
Das folgende Beispiel zeigt Daten im NCSA gängigen Protokollformat, wie es dokumentiert ist. 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
Erstellen Sie in Athena eine Tabelle für Protokolle IIS NCSA
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 grok classifiers im Developer Guide.AWS Glue
Um in Athena eine Tabelle für IIS NCSA Webserver-Logs zu erstellen
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. -
Fügen Sie die folgende DDL Anweisung in den Athena-Abfrage-Editor ein. Ändern Sie die Werte so
LOCATION 's3://amzn-s3-demo-bucket/
, dass sie auf Ihre IIS NCSA Protokolle in Amazon S3 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.
Beispiel: Wählen Sie Abfragen für IIS NCSA Protokolle aus
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 dem 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 Anfragen mit HTTP Statuscode 200
(erfolgreich) von Benutzern in der AnyCompany
Domain.
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.