Verwenden von Amazon Athena, um Internetmessungen in Amazon-S3-Protokolldateien abzufragen
Sie können Amazon Athena verwenden, um die Internetmessungen abzufragen und anzuzeigen, die Internet Monitor in einem Amazon-S3-Bucket veröffentlicht. Es gibt eine Option in Internet Monitor, mit der Sie Internetmessungen für Ihre Anwendung in einem S3-Bucket für den internetbezogenen Datenverkehr für Ihre überwachten Stadtnetze (Kundenstandorte und ASNs, in der Regel Internetdienstanbieter oder ISPs) veröffentlichen können. Unabhängig davon, ob Sie sich für die Veröffentlichung von Messungen in S3 entscheiden, veröffentlicht Internet Monitor automatisch alle fünf Minuten Internetmessungen in CloudWatch Logs für die 500 wichtigsten Stadtnetze (nach Verkehrsaufkommen) für jeden Monitor.
In diesem Kapitel erfahren Sie, wie Sie in Athena eine Tabelle für Internetmessungen in einer S3-Protokolldatei erstellen. Anschließend finden Sie Beispielabfragen, um verschiedene Ansichten der Messungen zu sehen. Sie können beispielsweise nach Ihren 10 am stärksten betroffenen Stadtnetze nach Latenzauswirkungen abfragen.
Verwenden von Amazon Athena zum Erstellen einer Tabelle für Internetmessungen in Internet Monitor
Um Athena mit Ihren S3-Protokolldateien von Internet Monitor zu verwenden, erstellen Sie zunächst eine Tabelle für die Internetmessungen.
Folgen Sie den Schritten in diesem Verfahren, um eine Tabelle in Athena auf der Grundlage der S3-Protokolldateien zu erstellen. Anschließend können Sie Athena-Abfragen für die Tabelle ausführen, z. B. diese Beispielabfragen für Internetmessungen, um Informationen über Ihre Messungen zu erhalten.
So erstellen Sie eine Athena-Tabelle
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. Geben Sie im Athena-Abfrage-Editor eine Abfrageanweisung ein, um eine Tabelle mit Internetmessungen von Internet Monitor zu erstellen. Ersetzen Sie den Wert für den Parameter LOCATION durch den Speicherort des S3-Buckets, in dem Ihre Internetmessungen von Internet Monitor gespeichert sind.
CREATE EXTERNAL TABLE internet_measurements ( version INT, timestamp INT, clientlocation STRING, servicelocation STRING, percentageoftotaltraffic DOUBLE, bytesin INT, bytesout INT, clientconnectioncount INT, internethealth STRING, trafficinsights STRING ) PARTITIONED BY (year STRING, month STRING, day STRING) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://amzn-s3-demo-bucket/bucket_prefix/AWSLogs/account_id/internetmonitor/AWS_Region/' TBLPROPERTIES ('skip.header.line.count' = '1');Geben Sie eine Anweisung ein, um eine Partition zum Lesen der Daten zu erstellen. Die folgende Abfrage erstellt zum Beispiel eine einzelne Partition für ein bestimmtes Datum und einen bestimmten Ort:
ALTER TABLE internet_measurements ADD PARTITION (year = 'YYYY', month = 'MM', day = 'dd') LOCATION 's3://amzn-s3-demo-bucket/bucket_prefix/AWSLogs/account_id/internetmonitor/AWS_Region/YYYY/MM/DD';Wählen Sie Ausführen aus.
Athena-Beispielanweisungen für Internetmessungen
Im Folgenden finden Sie ein Beispiel für eine Anweisung zur Erstellung einer Tabelle:
CREATE EXTERNAL TABLE internet_measurements ( version INT, timestamp INT, clientlocation STRING, servicelocation STRING, percentageoftotaltraffic DOUBLE, bytesin INT, bytesout INT, clientconnectioncount INT, internethealth STRING, trafficinsights STRING ) PARTITIONED BY (year STRING, month STRING, day STRING) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://internet-measurements/TestMonitor/AWSLogs/1111222233332/internetmonitor/us-east-2/' TBLPROPERTIES ('skip.header.line.count' = '1');
Im Folgenden finden Sie ein Beispiel für eine Anweisung zum Erstellen einer Partition zum Lesen der Daten:
ALTER TABLE internet_measurements ADD PARTITION (year = '2023', month = '04', day = '07') LOCATION 's3://internet-measurements/TestMonitor/AWSLogs/1111222233332/internetmonitor/us-east-2/2023/04/07/'
Beispiele für Amazon-Athena-Abfragen zur Verwendung mit Internetmessungen in Internet Monitor
Dieser Abschnitt enthält Beispielabfragen, die Sie mit Amazon Athena verwenden können, um Informationen über die in Amazon S3 veröffentlichten Internetmessungen Ihrer Anwendung zu erhalten.
Fragen Sie Ihre 10 am häufigsten betroffenen Kundenstandorte und ASNs ab (gemessen am Gesamtanteil des Verkehrs)
Führen Sie diese Athena-Abfrage aus, um die 10 am stärksten betroffenen Stadtnetze (nach Gesamtprozentsatz des Datenverkehrs) zu ermitteln, d. h. Kundenstandorte und ASNs, in der Regel Internetdienstanbieter.
SELECT json_extract_scalar(clientLocation, '$.city') as city, json_extract_scalar(clientLocation, '$.networkname') as networkName, sum(percentageoftotaltraffic) as percentageoftotaltraffic FROM internet_measurements GROUP BY json_extract_scalar(clientLocation, '$.city'), json_extract_scalar(clientLocation, '$.networkname') ORDER BY percentageoftotaltraffic desc limit 10
Fragen Sie Ihre 10 (nach Verfügbarkeit) am häufigsten betroffenen Kundenstandorte und ASNs ab
Führen Sie diese Athena-Abfrage aus, um die 10 am stärksten betroffenen Stadtnetze (nach Gesamtprozentsatz des Datenverkehrs) zu ermitteln, d. h. Kundenstandorte und ASNs, in der Regel Internetdienstanbieter.
SELECT json_extract_scalar(clientLocation, '$.city') as city, json_extract_scalar(clientLocation, '$.networkname') as networkName, sum( cast( json_extract_scalar( internetHealth, '$.availability.percentageoftotaltrafficimpacted' ) as double ) ) as percentageOfTotalTrafficImpacted FROM internet_measurements GROUP BY json_extract_scalar(clientLocation, '$.city'), json_extract_scalar(clientLocation, '$.networkname') ORDER BY percentageOfTotalTrafficImpacted desc limit 10
Ihre 10 (nach Latenz) am stärksten betroffenen Kundenstandorte und ASNs abfragen
Führen Sie diese Athena-Abfrage aus, um die 10 Stadtnetze zu ermitteln, die am stärksten von der Latenz betroffen sind, d. h. Kundenstandorte und ASNs, in der Regel Internetdienstanbieter.
SELECT json_extract_scalar(clientLocation, '$.city') as city, json_extract_scalar(clientLocation, '$.networkname') as networkName, sum( cast( json_extract_scalar( internetHealth, '$.performance.percentageoftotaltrafficimpacted' ) as double ) ) as percentageOfTotalTrafficImpacted FROM internet_measurements GROUP BY json_extract_scalar(clientLocation, '$.city'), json_extract_scalar(clientLocation, '$.networkname') ORDER BY percentageOfTotalTrafficImpacted desc limit 10
Die Datenverkehrs-Highlights für Ihre Kundenstandorte und ASNs abfragen
Führen Sie diese Athena-Abfrage aus, um für Ihre Stadtnetze – d. h. Kundenstandorte und ASNs, in der Regel Internetdienstanbieter – Highlights zum Datenverkehr zu erhalten, einschließlich Verfügbarkeitsbewertung, Leistungsbewertung und Zeit bis zum ersten Byte.
SELECT json_extract_scalar(clientLocation, '$.city') as city, json_extract_scalar(clientLocation, '$.subdivision') as subdivision, json_extract_scalar(clientLocation, '$.country') as country, avg(cast(json_extract_scalar(internetHealth, '$.availability.experiencescore') as double)) as availabilityScore, avg(cast(json_extract_scalar(internetHealth, '$.performance.experiencescore') as double)) performanceScore, avg(cast(json_extract_scalar(trafficinsights, '$.timetofirstbyte.currentexperience.value') as double)) as averageTTFB, sum(bytesIn) as bytesIn, sum(bytesOut) as bytesOut, sum(bytesIn + bytesOut) as totalBytes FROM internet_measurements where json_extract_scalar(clientLocation, '$.city') != 'N/A' GROUP BY json_extract_scalar(clientLocation, '$.city'), json_extract_scalar(clientLocation, '$.subdivision'), json_extract_scalar(clientLocation, '$.country') ORDER BY totalBytes desc limit 100
Weitere Informationen zur Verwendung von Athena finden Sie im Amazon Athena-Benutzerhandbuch.