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

NCSA-Protokolldateiformat abfragen

IIS verwendet auch das NCSA-Protokollierungsformat, das eine feste Anzahl von Feldern im ASCII-Textformat aufweist, die durch Leerzeichen getrennt sind. Die Struktur ähnelt dem allgemeinen Protokollformat, das für Apache-Zugriffsprotokolle verwendet wird. Felder im allgemeinen NCSA-Protokolldatenformat umfassen die Client-IP-Adresse, die Client-ID (wird normalerweise nicht verwendet), die Domäne\Benutzer-ID, den Zeitstempel der empfangenen Anforderung, den Text der Client-Anfrage, den Serverstatuscode und die Größe des an den Client zurückgegebenen Objekts .

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

  2. 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/iis-ncsa-logs/', um auf Ihre IIS-NCSA-Protokolle in Amazon S3 zu 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.

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.

Abfragen eines IIS-NCSA-Protokolls von Athena für HTTP-404-Einträge.
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.

Abfragen eines IIS-NCSA-Protokolls von Athena für HTTP-200-Einträge.