Format der NCSA Protokolldatei abfragen - Amazon Athena

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 eine feste Anzahl von Feldern im ASCII Textformat enthält, die durch Leerzeichen getrennt sind. Die Struktur ähnelt dem allgemeinen Protokollformat, das für Apache-Zugriffsprotokolle verwendet wird. Zu den Feldern im NCSA gängigen Protokolldatenformat gehören die Client-IP-Adresse, die Client-ID (normalerweise nicht verwendet), die Domäne\ Benutzer-ID, der Zeitstempel der empfangenen Anfrage, der Text der Client-Anfrage, der Serverstatuscode und die Größe des an den Client zurückgegebenen Objekts.

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
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Fügen Sie die folgende DDL Anweisung in den Athena-Abfrage-Editor ein. Ändern Sie die Werte soLOCATION 's3://amzn-s3-demo-bucket/iis-ncsa-logs/', dass sie auf Ihre IIS NCSA Protokolle in Amazon S3 verweisen.

    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. 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.

Ein IIS NCSA Protokoll von Athena nach Einträgen abfragen. HTTP 404
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.

Ein IIS NCSA Protokoll von Athena nach Einträgen abfragen. HTTP 200