本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon Athena 查詢 Amazon S3 日誌檔案中的網際網路測量
您可以使用 Amazon Athena 查詢和檢視 Amazon CloudWatch Internet Monitor 發佈至 Amazon S3 儲存貯體的網際網路測量。網路監視器中有一個選項可讓您的應用程式將網際網路測量發佈到 S3 儲存貯體,以用於受監控城市網路的網際網路面向流量 (用戶端和 ASNs,通常是網際網路服務供應商 或 ISPs)。無論您是否選擇將測量結果發佈至 S3,網際網路監視器都會針對每個監視器的前 500 個 (依流量) 城市網路,每五分鐘自動將網際網路測量結果發佈至 CloudWatch 日誌。
本章節包含針對位於 S3 日誌檔案中的網際網路度量在 Athena 中建立資料表的方法步驟,以及提供範例查詢以查看度量的不同檢視。例如,您可以透過延遲影響查詢前 10 個受影響的城市網路。
使用 Amazon Athena 在網路監視器中建立網際網路度量的資料表
若要搭配網路監視器 S3 日誌檔案開始使用 Athena,請先建立網際網路度量的資料表。
按照此程序中的步驟,以根據 S3 日誌檔案在 Athena 中建立資料表。接著,您可以在資料表上執行 Athena 查詢 (例如,這些範例網際網路測量查詢),以取得度量的相關資訊。
建立 Athena 資料表
在 https://console.aws.amazon.com/athena/
中開啟 Athena 主控台。 在 Athena 查詢編輯器中,輸入查詢陳述式,以產生具有網路監視器網際網路度量的資料表。將 LOCATION 參數的值取代為儲存網際網路監視器網際網路測量的 S3 儲存貯體位置。
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');輸入陳述式以建立讀取資料的分割區。例如,下列查詢會針對指定的日期和位置建立單一分割區:
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
';選擇執行。
網際網路度量的範例 Athena 陳述式
下列為產生資料表的陳述式範例:
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');
下列為建立讀取資料之分割區的陳述式範例:
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/'
可搭配使用網路監視器之網際網路度量的範例 Amazon Athena 查詢
本節包含可與 Amazon Athena 搭配使用的範例查詢,可取得有關發佈至 Amazon S3 之應用程式網際網路度量的資訊。
查詢受影響前 10 個 (以流量總百分比為單位) 的用戶端位置和 ASNs
執行此 Athena 查詢,以傳回受影響的前 10 個 (依總流量百分比) 城市網路,也就是用戶端位置和 ASNs,通常是網際網路服務供應商。
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
查詢受影響前 10 個 (依可用性) 用戶端位置和 ASNs
執行此 Athena 查詢,以傳回受影響的前 10 個 (依總流量百分比) 城市網路,也就是用戶端位置和 ASNs,通常是網際網路服務供應商。
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
查詢受影響 (依延遲) 的前 10 個用戶端位置和 ASNs
執行此 Athena 查詢,以傳回受影響的前 10 個 (依延遲影響) 城市網路,也就是用戶端位置和 ASNs,通常是網際網路服務供應商。
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
查詢用戶端位置和 的流量重點 ASNs
執行此 Athena 查詢以傳回流量重點,包括可用性分數、效能分數,以及城市網路的第一個位元組時間,也就是用戶端位置和 ASNs,通常是網際網路服務供應商。
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
如需有關使用 Athena 的詳細資訊,請參閱《Amazon Athena 使用者指南》https://docs.aws.amazon.com/athena/latest/ug/。