Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
如何使用 Athena 分析 Amazon VPC 流程日誌?
我想使用 Amazon Athena 分析 Amazon Virtual Private Cloud (Amazon VPC) 流程日誌。
簡短描述
您可以使用 Athena 主控台查詢編輯器來建立資料庫、為 VPC 流程日誌建立資料表,以及執行範例查詢。使用流程日誌來分析網路流量模式,並識別 Amazon VPC 網路中的威脅與風險。
解決方法
使用 Athena 主控台查詢編輯器建立資料庫
請完成下列步驟:
- 開啟 Athena console query editor (Athena 主控台查詢編輯器)。
- 執行下列命令:
**注意:**將 test_db_vpclogs 替換為您的資料庫名稱。CREATE DATABASE test_db_vpclogs;
**重要:**最佳做法是在儲存流程日誌的 Amazon Simple Storage Service (Amazon S3) 儲存貯體所在的相同 AWS 區域中建立資料庫。
在資料庫中為流程日誌建立資料表
請完成下列步驟:
- 在 Athena 主控台查詢編輯器中,執行下列命令:
**注意:**將 test_table_vpclogs 替換為您資料表的名稱。CREATE EXTERNAL TABLE `vpcflow_logs`( `version` int, `resource_type` string, `account_id` string, `tgw_id` string, `tgw_attachment_id` string, `tgw_src_vpc_account_id` string, `tgw_dst_vpc_account_id` string, `tgw_src_vpc_id` string, `tgw_dst_vpc_id` string, `tgw_src_subnet_id` string, `tgw_dst_subnet_id` string, `tgw_src_eni` string, `tgw_dst_eni` string, `tgw_src_az_id` string, `tgw_dst_az_id` string, `tgw_pair_attachment_id` string, `srcaddr` string, `dstaddr` string, `srcport` int, `dstport` int, `protocol` bigint, `packets` bigint, `bytes` bigint, `start` bigint, `end` bigint, `log_status` string, `type` string, `packets_lost_no_route` bigint, `packets_lost_blackhole` bigint, `packets_lost_mtu_exceeded` bigint, `packets_lost_ttl_expired` bigint, `tcp_flags` int, `region` string, `flow_direction` string, `pkt_src_aws_service` string, `pkt_dst_aws_service` string) PARTITIONED BY ( `aws_region` string, `log_time` string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://AWS_S3_BUCKET/awsexampleprefix/AWSLogs/AWS_ACCOUNT_NUMBER/vpcflowlogs/' TBLPROPERTIES ( 'projection.aws_region.type'='enum', 'projection.aws_region.values'='us-east-1,us-west-2,ap-southeast-2', 'projection.log_time.format'='yyyy/MM/dd', 'projection.log_time.range'='2025/01/01,NOW', 'projection.log_time.type'='date', 'projection.enabled'='true', 'skip.header.line.count'='1', 'storage.location.template'='s3://AWS_S3_BUCKET/awsexampleprefix/AWSLogs/AWS_ACCOUNT_NUMBER/vpcflowlogs/${aws_region}/${log_time}')
修改 LOCATION 參數,以指向包含日誌資料的 Amazon S3 儲存貯體。根據資料中最早可用的日誌,設定 projection.log_time.range 的第一個值。例如,如果您的日誌從 2023 年 3 月 1 日開始,則將時間範圍設為 '2025/03/01,NOW'。根據日誌的實際開始日期修改值,以進行準確的資料投影。上述命令使用分區投影來建立資料表、分割資料表,並自動填入分區。如果 Amazon S3 中沒有投影的分區,則 Athena 仍然會投影該分區。最佳做法就是在查詢中使用分割的屬性。
在資料表上執行 SQL 陳述式以查詢流程日誌
使用 Athena 主控台查詢編輯器在資料表上執行 SQL 陳述式。您可以儲存查詢、檢視先前的查詢或下載 .csv 格式的查詢結果。
查詢範例
**注意:**在下列範例查詢中,將 test_table_vpclogs 替換為您資料表的名稱。根據您的使用案例修改欄值和其他變數。
若要依照時間順序查看指定時間段內的前 100 個流程日誌項目,請執行下列查詢:
SELECT * FROM test_table_vpclogs WHERE day >= '2021/02/01' AND day < '2021/02/28' ORDER BY day ASC LIMIT 100;
若要查看指定時間段內接收 HTTP 封包數量前十的伺服器,請執行下列查詢:
SELECT SUM(packets) AS packetcount, dstaddr FROM test_table_vpclogs WHERE dstport = 443 AND day >= '2021/03/01' AND day < '2021/03/31' GROUP BY dstaddr ORDER BY packetcount DESC LIMIT 10;
**注意:**上述查詢會計算 HTTPS 連接埠 443 上接收到的封包數目,並依目標 IP 位址將它們分組。然後,查詢會傳回前一週的前 10 個項目。
若要檢查指定時間範圍內建立的日誌,請執行下列查詢:
SELECT interface_id, srcaddr, action, protocol, to_iso8601(from_unixtime(start)) AS start_time, to_iso8601(from_unixtime("end")) AS end_time FROM test_table_vpclogs WHERE DAY >= '2021/04/01' AND DAY < '2021/04/30';
若要檢視指定時間範圍內特定來源 IP 位址的流程日誌,請執行下列查詢:
SELECT *FROM test_table_vpclogs WHERE srcaddr = '10.117.1.22' AND day >= '2021/02/01' AND day < '2021/02/28';
若要列出指定時間範圍內遭拒絕的 TCP 連線,請執行下列查詢:
SELECT day, interface_id, srcaddr, action, protocol FROM test_table_vpclogs WHERE action = 'REJECT' AND protocol = 6 AND day >= '2021/02/01' AND day < '2021/02/28' LIMIT 10;
若要檢視以 10.117 開頭之 IP 位址範圍的流程日誌,請執行下列查詢:
SELECT *FROM test_table_vpclogs WHERE split_part(srcaddr,'.', 1)='10' AND split_part(srcaddr,'.', 2) ='117'
若要檢視時間範圍內特定目的地 IP 位址的流程日誌,請執行下列查詢:
SELECT *FROM test_table_vpclogs WHERE dstaddr = '10.0.1.14' AND day >= '2021/01/01' AND day < '2021/01/31'
相關資訊

相關內容
- 已提問 9 個月前lg...
- 已提問 2 年前lg...
- 已提問 2 年前lg...
- 已提問 2 年前lg...