Uso de Amazon Athena para consultar las mediciones de Internet en los archivos de registro de Amazon S3 - Amazon CloudWatch

Uso de Amazon Athena para consultar las mediciones de Internet en los archivos de registro de Amazon S3

Puede utilizar Amazon Athena para consultar y ver las mediciones de Internet que Amazon CloudWatch Internet Monitor publica en un bucket de Amazon S3. Internet Monitor ofrece la opción de publicar las mediciones de Internet de su aplicación en un bucket de S3 para el tráfico dirigido a Internet de las redes urbanas supervisadas (ubicaciones de clientes y ASN, normalmente proveedores de servicios de Internet o ISP). Independientemente de si elige publicar las mediciones en S3, Internet Monitor publica automáticamente en Registros de CloudWatch cada cinco minutos las mediciones de Internet de las 500 principales ciudades urbanas (por volumen de tráfico) de cada monitor.

Este capítulo incluye los pasos para crear una tabla en Athena para las mediciones de Internet ubicadas en un archivo de registro de S3 y, a continuación, proporciona consultas de ejemplo para ver diferentes vistas de las mediciones. Por ejemplo, puede consultar las 10 redes urbanas más afectadas según el impacto en la latencia.

Usar Amazon Athena para crear una tabla de mediciones de Internet en Internet Monitor

Para empezar a utilizar Athena con los archivos de registro de Internet Monitor S3, primero debe crear una tabla para las mediciones de Internet.

Siga los pasos de este procedimiento para crear una tabla en Athena basada en los archivos de registro de S3. A continuación, puede ejecutar consultas de Athena en la tabla, como estas consultas de medición de Internet de ejemplo, para obtener información sobre sus medidas.

Crear una tabla de Athena

  1. Abra la consola Athena en https://console.aws.amazon.com/athena/.

  2. En el editor de consultas de Athena, introduzca una declaración de consulta para generar una tabla con las mediciones de Internet de Internet Monitor. Sustituya el valor del parámetro LOCATION por la ubicación del bucket S3 en el que se almacenan las mediciones de Internet de Internet Monitor.

    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. Introduzca una sentencia para crear una partición que lea los datos. La consulta de ejemplo siguiente crea una sola partición para la fecha y ubicación especificadas:

    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. Elija Ejecutar.

Ejemplos de declaraciones de Athena para mediciones de Internet

El siguiente es un ejemplo de una sentencia para generar una tabla:

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

El siguiente es un ejemplo de una sentencia para crear una partición para leer los datos:

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

Ejemplos de consultas de Amazon Athena para usarlas con mediciones de Internet en Internet Monitor

En esta sección se incluyen ejemplos de consultas que puede utilizar con Amazon Athena para obtener información sobre las mediciones de Internet de su aplicación publicadas en Amazon S3.

Consultar las 10 ubicaciones de clientes y ASN más afectados (por porcentaje total de tráfico)

Ejecute esta consulta de Athena para obtener las 10 redes urbanas más afectadas (por porcentaje total del tráfico), es decir, las ubicaciones de los clientes y los ASN, normalmente proveedores de servicios 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 las 10 ubicaciones de clientes y ASN más afectados (por disponibilidad)

Ejecute esta consulta de Athena para obtener las 10 redes urbanas más afectadas (por porcentaje total del tráfico), es decir, las ubicaciones de los clientes y los ASN, normalmente proveedores de servicios 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 las 10 ubicaciones de clientes y ASN más afectados (por latencia)

Ejecute esta consulta de Athena para obtener las 10 redes urbanas más afectadas (por impacto de la latencia), es decir, las ubicaciones de los clientes y los ASN, normalmente proveedores de servicios 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 los puntos destacados del tráfico para las ubicaciones de sus clientes y los ASN

Ejecute esta consulta de Athena para devolver los aspectos más destacados del tráfico, como la puntuación de disponibilidad, la puntuación de rendimiento y el tiempo transcurrido hasta el primer byte para las redes de sus ciudades, es decir, las ubicaciones de los clientes y los ASN, normalmente proveedores de servicios 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 obtener más información sobre el uso de Athena, consulte la Guía del usuario de Amazon Athena.