Utiliser Amazon Athena pour interroger les mesures Internet dans les fichiers journaux Amazon S3 - Amazon CloudWatch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser Amazon Athena pour interroger les mesures Internet dans les fichiers journaux Amazon S3

Vous pouvez utiliser Amazon Athena pour interroger et consulter les mesures Internet publiées par Internet Monitor dans un compartiment Amazon S3. Internet Monitor propose une option permettant de publier les mesures Internet de votre application dans un compartiment S3 pour le trafic Internet destiné aux réseaux urbains que vous surveillez (sites clients et ASNs, généralement, fournisseurs de services Internet ou). ISPs Que vous choisissiez ou non de publier les mesures sur S3, Internet Monitor publie automatiquement les mesures Internet dans CloudWatch Logs toutes les cinq minutes pour les 500 principaux réseaux urbains (en termes de volume de trafic) pour chaque moniteur.

Ce chapitre explique comment créer une table dans Athena pour les mesures Internet situées dans un fichier journal S3, puis fournit des exemples de requêtes pour voir les mesures de différentes façons. Par exemple, vous pouvez rechercher les 10 réseaux urbains les plus affectés par un impact sur la latence.

Utiliser Amazon Athena pour créer une table des mesures Internet dans Moniteur Internet

Pour commencer à utiliser Athena avec les fichiers journaux S3 de Moniteur Internet, vous devez d'abord créer une table des mesures Internet.

Suivez les étapes de cette procédure pour créer une table dans Athena à partir des fichiers journaux S3. Vous pouvez ensuite exécuter des requêtes Athena sur la table, comme ces exemples de requêtes de mesures Internet, pour obtenir des informations sur vos mesures.

Pour créer une table Athéna

  1. Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/.

  2. Dans l'éditeur de requêtes Athena, saisissez une instruction de requête pour générer une table contenant les mesures Internet Moniteur Internet. Remplacez la valeur du paramètre LOCATION par l'emplacement du compartiment S3 dans lequel sont stockées les mesures Internet de Moniteur 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');
  3. Saisissez une instruction pour créer une partition afin de lire les données. Par exemple, la requête suivante crée une partition unique pour une date et un emplacement spécifiques :

    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. Cliquez sur Exécuter.

Exemples d'instructions Athéna pour les mesures Internet

Voici un exemple d'instruction permettant de générer une table :

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

Voici un exemple d'instruction permettant de créer une partition pour lire les données :

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

Exemples de requêtes Amazon Athena à utiliser avec les mesures Internet dans Moniteur Internet

Cette section inclut des exemples de requêtes que vous pouvez utiliser avec Amazon Athena pour obtenir des informations sur les mesures Internet de votre application publiées sur Amazon S3.

Recherchez les 10 sites de vos clients les plus touchés (en pourcentage total du trafic) et ASNs

Exécutez cette requête Athena pour obtenir les 10 réseaux urbains les plus touchés (en pourcentage total du trafic), c'est-à-dire les sites des clients et ASNs, généralement, les fournisseurs de services 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

Renseignez-vous sur les 10 sites clients les plus concernés (selon leur disponibilité) et ASNs

Exécutez cette requête Athena pour obtenir les 10 réseaux urbains les plus touchés (en pourcentage total du trafic), c'est-à-dire les sites des clients et ASNs, généralement, les fournisseurs de services 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

Recherchez les 10 sites clients les plus touchés (en termes de latence) et ASNs

Exécutez cette requête Athena pour obtenir les 10 réseaux urbains les plus touchés (en termes d'impact de latence), c'est-à-dire les sites des clients et ASNs, généralement, les fournisseurs de services 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

Consultez les informations relatives au trafic sur les sites de vos clients et ASNs

Exécutez cette requête Athena pour obtenir des informations sur le trafic, notamment le score de disponibilité, le score de performance et le délai d'utilisation du premier octet pour les réseaux de votre ville, c'est-à-dire les sites des clients et, généralement ASNs, les fournisseurs de services 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

Pour plus d’informations sur l’utilisation d’Athena, consultez le Guide de l’utilisateur Amazon Athena.