Fragen Sie das erweiterte W3C-Protokolldateiformat ab - 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.

Fragen Sie das erweiterte W3C-Protokolldateiformat ab

Das erweiterte W3C-Protokolldateidatenformat hat durch Leerzeichen getrennte Felder. Die Felder, die in erweiterten W3C-Protokollen erscheinen, werden von einem Webserver-Administrator bestimmt, der auswählt, welche Protokollfelder eingeschlossen werden sollen. Die folgenden Beispielprotokolldaten enthalten die Felder date, time, c-ip, s-ip, cs-method, cs-uri-stem, sc-status, sc-bytes, cs-bytes, time-taken und cs-version.

2020-01-19 22:48:39 203.0.113.5 198.51.100.2 GET /default.html 200 540 524 157 HTTP/1.0 2020-01-19 22:49:40 203.0.113.10 198.51.100.12 GET /index.html 200 420 324 164 HTTP/1.0 2020-01-19 22:50:12 203.0.113.12 198.51.100.4 GET /image.gif 200 324 320 358 HTTP/1.0 2020-01-19 22:51:44 203.0.113.15 198.51.100.16 GET /faq.html 200 330 324 288 HTTP/1.0

Erstellen Sie eine Tabelle in Athena für erweiterte W3C-Protokolle

Bevor Sie Ihre erweiterten W3C-Protokolle abfragen können, müssen Sie ein Tabellenschema erstellen, damit Athena die Protokolldaten lesen kann.

So erstellen Sie eine Tabelle in Athena für erweiterte W3C-Protokolle
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Fügen Sie eine DDL Anweisung wie die folgende in die Athena-Konsole ein und beachten Sie dabei die folgenden Punkte:

    1. Fügen Sie die Spalten im Beispiel hinzu, oder entfernen Sie sie, damit sie den Feldern in den Protokollen entsprechen, die Sie abfragen möchten.

    2. Spaltennamen im erweiterten W3C-Format für Protokolldateien enthalten Bindestriche (-). In Übereinstimmung mit den Athena-Namenskonventionen werden sie jedoch in der CREATE TABLE-Beispielanweisung durch Unterstriche (_) ersetzt.

    3. Um das Leerzeichen anzugeben, verwenden Sie FIELDS TERMINATED BY ' '.

    4. Ändern Sie die Werte in LOCATION 's3://amzn-s3-demo-bucket/w3c-log-folder/' so, dass sie auf Ihre erweiterten W3C-Protokolle in Amazon S3 verweisen.

    CREATE EXTERNAL TABLE `iis_w3c_logs`( date_col string, time_col string, c_ip string, s_ip string, cs_method string, cs_uri_stem string, sc_status string, sc_bytes string, cs_bytes string, time_taken string, cs_version string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/w3c-log-folder/'
  3. Führen Sie die Abfrage in der Athena-Konsole aus, um die iis_w3c_logs-Tabelle zu registrieren. Wenn die Abfrage abgeschlossen ist, können Sie die Protokolle aus Athena abfragen.

Beispiel für eine erweiterte W3C-Protokoll-Auswahlabfrage

Die folgende Beispielabfrage wählt Datum, Uhrzeit, Anforderungsziel und die für die Anforderung benötigte Zeit aus der Tabelle iis_w3c_logs aus. Die WHERE Klausel filtert nach Fällen, in denen die HTTP Methode GET und der HTTP Statuscode 200 (erfolgreich) lauten.

SELECT date_col, time_col, cs_uri_stem, time_taken FROM iis_w3c_logs WHERE cs_method = 'GET' AND sc_status = '200'

Das folgende Image zeigt die Ergebnisse der Abfrage im Athena-Abfrage-Editor.

Beispielabfrageergebnisse in Athena von erweiterten W3C-Protokolldateien, die in Amazon S3 gespeichert sind.

Kombinieren Sie die Felder für Datum und Uhrzeit

Die durch Leerzeichen getrennten date- und time-Felder sind separate Einträge in den Protokollquelldaten, aber Sie können sie bei Bedarf zu einem Zeitstempel kombinieren. Verwenden Sie die Funktionen concat () und date_parse () in einer SELECToder SELECT AS-Abfrage, um die Datums- und CREATETABLEUhrzeitspalten zu verketten und in das Zeitstempelformat zu konvertieren. Im folgenden Beispiel wird eine CTAS Abfrage verwendet, um eine neue Tabelle mit einer Spalte zu erstellen. derived_timestamp

CREATE TABLE iis_w3c_logs_w_timestamp AS SELECT date_parse(concat(date_col,' ', time_col),'%Y-%m-%d %H:%i:%s') as derived_timestamp, c_ip, s_ip, cs_method, cs_uri_stem, sc_status, sc_bytes, cs_bytes, time_taken, cs_version FROM iis_w3c_logs

Nachdem die Tabelle erstellt wurde, können Sie die neue Zeitstempelspalte direkt abfragen, wie im folgenden Beispiel.

SELECT derived_timestamp, cs_uri_stem, time_taken FROM iis_w3c_logs_w_timestamp WHERE cs_method = 'GET' AND sc_status = '200'

Das folgende Image zeigt die Ergebnisse der Abfrage.

Abfrageergebnisse der erweiterten W3C-Protokolldatei für eine Tabelle mit einer abgeleiteten Zeitstempelspalte.