本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Athena 分析和處理 Network Load Balancer 的日誌。這些日誌會接收傳送至 Network Load Balancer 之 Transport Layer Security (TLS) 的詳細資訊。您可以使用這些存取日誌來分析流量模式和排除問題。
分析 Network Load Balancer 存取日誌之前,請對其啟用和設定,以在目的地 Amazon S3 儲存貯體中儲存。如需詳細資訊,以及有關每個 Network Load Balancer 存取日誌項目的資訊,請參閱存取您的 Network Load Balancer 日誌。
若要為 Network Load Balancer 日誌建立資料表
-
複製下列 DDL 陳述式,並將其貼到 Athena 主控台。檢查 Network Load Balancer 日誌記錄的語法。視需要更新陳述式,以包含對應至日誌記錄的資料欄和 regex。
CREATE EXTERNAL TABLE IF NOT EXISTS nlb_tls_logs ( type string, version string, time string, elb string, listener_id string, client_ip string, client_port int, target_ip string, target_port int, tcp_connection_time_ms double, tls_handshake_time_ms double, received_bytes bigint, sent_bytes bigint, incoming_tls_alert int, cert_arn string, certificate_serial string, tls_cipher_suite string, tls_protocol_version string, tls_named_group string, domain_name string, alpn_fe_protocol string, alpn_be_protocol string, alpn_client_preference_list string, tls_connection_creation_time string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1', 'input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*):([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-0-9]*) ([-0-9]*) ([-0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ?([^ ]*)?( .*)?' ) LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/
AWS_account_ID
/elasticloadbalancing/region
'; -
修改
LOCATION
Amazon S3 儲存貯體,以指定您的 Network Load Balancer 日誌的目的地。 -
在 Athena 主控台中執行查詢。查詢完成之後,Athena 會註冊
nlb_tls_logs
資料表,讓其中的資料可供您查詢。
查詢範例
若要查看憑證使用的次數,請使用類似此範例的查詢:
SELECT count(*) AS
ct,
cert_arn
FROM "nlb_tls_logs"
GROUP BY cert_arn;
下列查詢顯示使用早於 TLS 1.3 版本的使用者數量:
SELECT tls_protocol_version,
COUNT(tls_protocol_version) AS
num_connections,
client_ip
FROM "nlb_tls_logs"
WHERE tls_protocol_version < 'tlsv13'
GROUP BY tls_protocol_version, client_ip;
使用下列查詢,來識別需要很長 TLS 交握時間的連接:
SELECT *
FROM "nlb_tls_logs"
ORDER BY tls_handshake_time_ms DESC
LIMIT 10;
使用下列查詢可以識別和計算在過去 30 天內交涉的 TLS 通訊協定版本和密碼套件。
SELECT tls_cipher_suite,
tls_protocol_version,
COUNT(*) AS ct
FROM "nlb_tls_logs"
WHERE from_iso8601_timestamp(time) > current_timestamp - interval '30' day
AND NOT tls_protocol_version = '-'
GROUP BY tls_cipher_suite, tls_protocol_version
ORDER BY ct DESC;