Utilizzo di Amazon Athena per eseguire query delle misurazioni Internet nei file di log di Amazon S3
Puoi usare Amazon Athena per interrogare e visualizzare le misurazioni Internet che Monitor Internet pubblica su un bucket Amazon S3. In Monitor Internet è disponibile un'opzione per pubblicare le misurazioni Internet della tua applicazione in un bucket S3 per il traffico connesso a Internet per le reti urbane monitorate (posizioni dei clienti e ASN, in genere provider di servizi Internet o ISP). Indipendentemente dal fatto che tu scelga di pubblicare le misurazioni su S3, Monitor Internet pubblica automaticamente le misurazioni Internet su File di log CloudWatch ogni cinque minuti per le prime 500 reti urbane (per volume di traffico) per ogni monitor.
Questo capitolo include i passaggi su come creare una tabella in Athena per le misurazioni su Internet che si trova in un file di log S3, quindi fornisce query di esempio per visualizzare diverse visualizzazioni delle misurazioni. Ad esempio, puoi interrogare le 10 reti urbane più colpite dall'impatto sulla latenza.
Utilizzo di Amazon Athena per creare una tabella per le misurazioni Internet in Monitor Internet
Per iniziare a utilizzare Athena con i file di log di S3 per Monitor Internet, devi prima creare una tabella per le misurazioni Internet.
Segui i passaggi di questa procedura per creare una tabella in Athena basata sui file di log di S3. Quindi, puoi eseguire query Athena sulla tabella, come questi esempi di query di misurazione su Internet, per ottenere informazioni sulle tue misurazioni.
Creazione di una tabella Athena
Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. Nell'editor di query Athena, inserisci un'istruzione di query per generare una tabella con le misurazioni Internet di Monitor Internet. Sostituisci il valore del parametro LOCATION con la posizione del bucket S3 in cui sono archiviate le misurazioni Internet di Monitor Internet.
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');Inserisci una istruzione per creare una partizione per leggere i dati. Ad esempio, la seguente query crea una singola partizione per una data e una posizione specificate:
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';Seleziona Esegui.
Esempi di istruzioni Athena per misurazioni Internet
Di seguito è riportato un esempio di istruzione per generare una tabella:
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');
Di seguito è riportato un esempio di istruzione per creare una partizione per leggere i dati:
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/'
Esempi di query Amazon Athena da utilizzare con le misurazioni Internet in Monitor Internet
Questa sezione include query di esempio che puoi utilizzare con Amazon Athena per ottenere informazioni sulle misurazioni Internet della tua applicazione pubblicate su Amazon S3.
Interroga le 10 posizioni client e gli ASN più interessati (in termini di percentuale totale di traffico)
Esegui questa query Athena per restituire le 10 principali reti urbane interessate (in termini di percentuale totale di traffico), ovvero le posizioni dei client e gli ASN, in genere provider di servizi Internet.
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
Interroga le 10 posizioni client e gli ASN più interessati (in termini di disponibilità)
Esegui questa query Athena per restituire le 10 principali reti urbane interessate (in termini di percentuale totale di traffico), ovvero le posizioni dei client e gli ASN, in genere provider di servizi Internet.
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
Interroga le 10 posizioni client e gli ASN più interessati (in termini di latenza)
Esegui questa query Athena per restituire le 10 principali reti urbane interessate (in termini di impatto di latenza), ovvero le posizioni dei client e gli ASN, in genere provider di servizi Internet.
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
Interroga i dati salienti del traffico relativi alle posizioni dei client e agli ASN
Esegui questa query Athena per restituire i dati salienti del traffico, tra cui il punteggio di disponibilità, il punteggio delle prestazioni e il time-to-first byte per le reti urbane, ovvero le posizioni dei client e gli ASN, in genere i provider di servizi Internet.
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
Per ulteriori informazioni sull'utilizzo di Athena, consulta la Guida per l'utente di Amazon Athena.