Usar o Amazon Athena para consultar medições de internet nos arquivos de log do Amazon S3 - Amazon CloudWatch

Usar o Amazon Athena para consultar medições de internet nos arquivos de log do Amazon S3

É possível usar o Amazon Athena para consultar e visualizar as medições da Internet que o Monitor de Internet do Amazon CloudWatch publicar em um bucket do Amazon S3. Há uma opção no Monitor de Internet de publicar medições da Internet para sua aplicação em um bucket S3 de tráfego voltado para a Internet para suas cidades-redes monitoradas (locais e ASNs de clientes, geralmente provedores de serviços de Internet ou ISPs). Independentemente de você escolher publicar medições no S3 ou não, o Monitor de Internet publica automaticamente medições da Internet no CloudWatch Logs a cada cinco minutos para as 500 principais (por volume de tráfego) cidades-redes para cada monitor.

Este capítulo inclui etapas sobre como criar uma tabela no Athena para medições da Internet localizadas em um arquivo de log do S3 e, em seguida, fornece exemplos de consultas para ver diferentes visualizações das medições. Por exemplo, é possível consultar as 10 principais redes de cidades afetadas por impacto de latência.

Uso do Amazon Athena para criar uma tabela para medições da Internet no Monitor de Internet

Para começar a usar o Athena com seus arquivos de log do S3 do Monitor de Internet, primeiro crie uma tabela para as medições da Internet.

Siga as etapas desse procedimento para criar uma tabela no Athena com base nos arquivos de log do S3. Em seguida, será possível executar consultas do Athena na tabela, como estes exemplos de consultas de medições na Internet, para obter informações sobre suas medições.

Para criar uma tabela do Athena

  1. Abra o console do Athena em https://console.aws.amazon.com/athena/.

  2. No editor de consultas do Athena, insira uma instrução de consulta para gerar uma tabela com as medições de Internet do Monitor de Internet. Substitua o valor do parâmetro LOCATION pelo local do bucket do S3 em que suas medições de Internet do Monitor de Internet estão armazenadas.

    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');
  3. Insira uma instrução para criar uma partição para ler os dados. Por exemplo, a consulta a seguir cria uma única partição para uma data e um local especificado:

    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';
  4. Escolha Executar.

Exemplo de instruções do Athena para medições de Internet

A seguir há um exemplo de uma instrução para gerar uma tabela:

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');

A seguir há um exemplo de uma instrução para criar uma partição para ler os dados:

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/'

Exemplos de consultas do Amazon Athena para uso com medições de Internet no Monitor de Internet

Esta seção inclui exemplos de consultas que podem ser usados com o Amazon Athena para obter informações sobre as medições de Internet da sua aplicação publicadas no Amazon S3.

Consultar seus 10 principais locais e ASNs de clientes afetados (por percentual total de tráfego)

Execute essa consulta do Athena para retornar suas 10 principais cidades-redes afetadas (por percentual total do tráfego), ou seja, locais e ASNs de clientes, geralmente provedores de serviços de 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

Consultar seus 10 principais locais e ASNs de clientes afetados (por disponibilidade)

Execute essa consulta do Athena para retornar suas 10 principais cidades-redes afetadas (por percentual total do tráfego), ou seja, locais e ASNs de clientes, geralmente provedores de serviços de 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

Consultar seus 10 principais locais e ASNs de clientes afetados (pela latência)

Execute essa consulta do Athena para retornar suas 10 principais cidades-redes afetadas (pelo impacto da latência), ou seja, locais e ASNs de clientes, geralmente provedores de serviços de 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

Consultar os destaques do tráfego para seus locais e ASNs de clientes

Execute essa consulta do Athena para retornar os destaques do tráfego, incluindo pontuação de disponibilidade, pontuação de performance e tempo até o primeiro byte de suas cidades-redes, ou seja, locais de clientes e ASNs, geralmente provedores de serviços de 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

Para obter mais informações sobre como usar o Athena, consulte o Guia do usuário do Amazon Athena.