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 W3Cdate,
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
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. -
Fügen Sie eine DDL Anweisung wie die folgende in die Athena-Konsole ein und beachten Sie dabei die folgenden Punkte:
-
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.
-
Spaltennamen im erweiterten W3C-Format für Protokolldateien enthalten Bindestriche (
-
). In Übereinstimmung mit den Athena-Namenskonventionen werden sie jedoch in derCREATE TABLE
-Beispielanweisung durch Unterstriche (_
) ersetzt. -
Um das Leerzeichen anzugeben, verwenden Sie
FIELDS TERMINATED BY ' '
. -
Ändern Sie die Werte in
LOCATION 's3://amzn-s3-demo-bucket/
so, dass sie auf Ihre erweiterten W3C-Protokolle in Amazon S3 verweisen.w3c-log-folder
/'
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
/' -
-
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.
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 ()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.