​ 存取日誌網路負載平衡器 - Elastic Load Balancing

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

​ 存取日誌網路負載平衡器

Elastic Load Balancing 提供存取日誌,可針對傳送到 的 TLS 請求,擷取其詳細資訊。網路負載平衡器. 您可以使用這些存取日誌來分析流量模式和排除問題。

重要

只有在負載平衡器具有 TLS 接聽程式、且其僅包含 TLS 請求資訊時,才會建立存取日誌。

存取記錄是 Elastic Load Balancing 的選用功能,預設為停用。在啓用負載平衡器的訪問日誌記錄之後, Elastic Load Balancing 將日誌捕獲爲壓縮文件,並將其存儲在 Amazon S3 您指定的桶。您可以隨時停用存取記錄。

如果您透過 Amazon S3 受管加密金鑰 (SSE-S3) 啟用 S3 儲存貯體伺服器端加密,每個存取日誌檔在存放於 S3 儲存貯體之前會自動加密,並於您存取它時解密。存取加密或未加密日誌檔的方式沒有不同,所以您不需要採取任何動作。系統會使用唯一的金鑰來加密每個日誌檔,金鑰本身會以定期輪換的主要金鑰來加密。有關詳細信息,請參閱 使用服務器端加密保護數據 Amazon S3-managedencryptionkeys(SSE-S3)Amazon Simple Storage Service 開發人員指南.

存取日誌無需額外收費。您的存儲成本爲 Amazon S3,但不是用於帶寬的 Elastic Load Balancing 要將日誌文件發送到 Amazon S3. 有關存儲成本的更多信息,請參閱 Amazon S3 定價.

存取日誌檔

Elastic Load Balancing 每 5 分鐘發佈每個負載平衡器節點的日誌檔。日誌傳遞最終會達到一致。負載平衡器可能在相同期間傳遞多個日誌。這通常是在網站的流量很高時才會發生。

存取日誌的檔案名稱使用以下格式:

bucket[/prefix]/AWSLogs/aws-account-id/elasticloadbalancing/region/yyyy/mm/dd/aws-account-id_elasticloadbalancing_region_load-balancer-id_end-time_random-string.log.gz
儲存貯體

S3 儲存貯體的名稱。

prefix.

儲存貯體中的字首 (邏輯階層)。如果不指定字首,日誌會放在儲存貯體的根層級。

aws-account-id

擁有者的 AWS 帳戶 ID。

region

負載平衡器和 S3 儲存貯體的區域。

年年年/毫米/DD

傳遞日誌的日期。

load-balancer-id

負載平衡器的資源 ID。如果資源 ID 包含任何斜線 (/),斜線會換成句點 (.)。

end-time

記錄間隔結束的日期和時間。例如,結束時間 20181220T2340Z 包含在 23:35 和 23:40 之間所提出之請求的項目。

random-string

系統產生的隨機字串。

您可以視需要在儲存貯體存放您的日誌檔,但也可以決定 Amazon S3 生命週期規則,自動封存或刪除日誌檔案。有關詳細信息,請參閱 對象生命週期管理Amazon Simple Storage Service 開發人員指南.

存取日誌項目

下表依序說明存取日誌項目的欄位。所有欄位以空格分隔。引進的新欄位會新增到日誌項目尾端。處理日誌檔案時,您應該忽略日誌項目尾端任何非預期的欄位。

欄位 描述:

類型

接聽程式的類型。支援的值為 tls.

version

日誌項目的版本。目前版本是 2.0。

time

在 TLS 連線結束時記錄的時間,採用 ISO 8601 格式。

elb

負載平衡器的資源 ID。

接聽程式

適用於連線的 TLS 接聽程式資源 ID。

client:port

用戶端的 IP 地址和連接埠。

destination:port

目的地的 IP 地址和連接埠。如果用戶端直接連線至負載平衡器,則目的地就是接聽程式。如果用戶端使用 VPC 端點服務連線,則目的地就是 VPC 端點。

connection_time

連線從開始到結束的完成時間,以毫秒計。

tls_handshake_time

​TCP 連線建立後,TLS 交握完成的總時間,包括用戶端的延遲,以毫秒計。此時間包含在 connection_time 欄位中。

received_bytes

負載平衡器從用戶端接收的解密後位元數。

sent_bytes

負載平衡器向用戶端傳送的加密前位元數。

incoming_tls_alert

負載平衡器從用戶端接收的 TLS 提醒整數值 (若有)。否則,此值設定為 -。

chosen_cert_arn

向用戶端所提供憑證的 ARN。​若未傳送有效的用戶端 hello 訊息,則此值設定為 -。

chosen_cert_serial

預留以供日後使用。此值設定為 -。

tls_cipher

與用戶端交涉的密碼套件,採用 OpenSSL 格式。若 TLS 交涉未完成,此值設定為 -。

tls_protocol_version

與用戶端交涉的 TLS 通訊協定,採用字串格式。可能的值是 tlsv10tlsv11,和 tlsv12...如果TLS談判未完成,此值設置爲-。

tls_named_group

預留以供日後使用。此值設定為 -。

domain_name

server_name 副檔名的值位於用戶端 hello 訊息中。此值為 URL 編碼格式。​若未傳送有效的用戶端 hello 訊息或無副檔名,則此值設定為 -。

alpn_fe_protocol

與用戶端交涉的應用程式通訊協定,採用字串格式。可能的值是 h2http/1.1,和 http/1.0...如果TLS偵聽程序中未配置ALPN策略,則未找到匹配協議,或者未發送有效協議列表,此值設置爲-。

alpn_be_protocol

與目標交涉的應用程式通訊協定,採用字串格式。可能的值是 h2http/1.1,和 http/1.0...如果TLS偵聽程序中未配置ALPN策略,則未找到匹配協議,或者未發送有效協議列表,此值設置爲-。

alpn_client_preference_list

用戶端您好訊息中的 application_layer_protocol_negotiation 延伸的值。此值為 URL 編碼格式。每個通訊協定用雙引號括起來,並以逗號分隔。如果 TLS 接聽程式中未設定任何 ALPN 政策、未傳送任何有效的用戶端您好訊息,或副檔名不存在,則此值會設定為 -。如果字串長度超過 256 個位元組,則會被截斷。

範例日誌項目

以下為日誌項目範例。請注意,分成多行顯示文字只是為了更輕鬆閱讀。

以下是不含 ALPN 政策的 TLS 接聽程式範例。

tls 2.0 2018-12-20T02:59:40 net/my-network-loadbalancer/c6e77e28c25b2234 g3d4b5e8bb8464cd 72.21.218.154:51341 172.100.100.185:443 5 2 98 246 - arn:aws:acm:us-east-2:671290407336:certificate/2a108f19-aded-46b0-8493-c63eb1ef4a99 - ECDHE-RSA-AES128-SHA tlsv12 - my-network-loadbalancer-c6e77e28c25b2234.elb.us-east-2.amazonaws.com - - -

以下是具有 ALPN 政策的 TLS 接聽程式範例。

tls 2.0 2020-04-01T08:51:42 net/my-network-loadbalancer/c6e77e28c25b2234 g3d4b5e8bb8464cd 72.21.218.154:51341 172.100.100.185:443 5 2 98 246 - arn:aws:acm:us-east-2:671290407336:certificate/2a108f19-aded-46b0-8493-c63eb1ef4a99 - ECDHE-RSA-AES128-SHA tlsv12 - my-network-loadbalancer-c6e77e28c25b2234.elb.us-east-2.amazonaws.com h2 h2 "h2","http/1.1"

儲存貯體需求

當您啟用存取記錄時,您必須為存取日誌指定 S3 儲存貯體。擁有儲存貯體的帳戶與擁有負載平衡器的帳戶可以不同。儲存貯體必須符合下列需求。

Requirements

  • 儲存貯體與負載平衡器必須位於相同的區域。

  • 您指定的前綴不能包括Awslogs。我們在您指定的桶名稱和前綴之後以awslogs開頭添加文件名的部分。

  • Amazon S3需要 受管加密金鑰 (SSE-S3)。不支援其他加密選項。

  • 儲存貯體必須有儲存貯體政策,以授權將存取日誌寫入您的儲存貯體。儲存貯體政策是以存取政策語言所編寫的 JSON 陳述式集合,可定義儲存貯體的存取許可。政策範例如下。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket_name/prefix/AWSLogs/123456789012/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::bucket_name" } ] }

啟用存取日誌

當您對負載平衡器啟用存取記錄時,您必須指定 S3 儲存貯體的名稱,供負載平衡器存放日誌。如需詳細資訊,請參閱儲存貯體需求.

使用主控台啟用存取記錄

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導航窗格中,選擇 負載平衡器.

  3. 選取您的負載平衡器。

  4. 描述 選項卡,選擇 編輯屬性.

  5. 編輯負載均衡器屬性 頁面,請執行以下操作:

    1. 對於 訪問日誌,選擇 啓用.

    2. 對於 S3位置,鍵入S3桶的名稱,包括任何前綴(例如, my-loadbalancer-logs/my-app)。您可以指定現有儲存貯體的名稱,或新儲存貯體的名稱。如果您指定現有的儲存貯體,請確定您擁有該儲存貯體,且已設定所需的儲存貯體政策。

    3. (可選)如果桶不存在,請選擇 爲我創建此位置. 您指定的名稱在 Amazon S3 中的所有現有儲存貯體名稱之間必須是唯一的,且遵循 DNS 命名慣例。有關詳細信息,請參閱 桶命名規則Amazon Simple Storage Service 開發人員指南.

    4. 選擇 保存.

使用 啟用存取記錄AWS CLI

使用 修改負載均衡器屬性 命令。

停用存取記錄

您可以隨時對負載平衡器停用存取記錄。在您停用存取記錄之後,存取日誌會保留在 S3 儲存貯體中,直到您刪除它們。有關詳細信息,請參閱 使用桶Amazon Simple Storage Service 主控台使用者指南.

使用主控台停用存取記錄

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導航窗格中,選擇 負載平衡器.

  3. 選取您的負載平衡器。

  4. 描述 選項卡,選擇 編輯屬性.

  5. 對於 訪問日誌,透明 啓用.

  6. 選擇 保存.

使用 停用存取記錄AWS CLI

使用 修改負載均衡器屬性 命令。

處理存取日誌檔

存取日誌檔已壓縮。如果您使用 Amazon S3 主控台開啟檔案,則會解壓縮檔案並顯示資訊。如果您下載檔案,則必須先將其解壓縮才能看到資訊。

如果您的網站上有許多需求,負載平衡器產生的日誌檔可能有好幾 GB 的資料。您可能無法逐行處理這麼龐大的資料。因此,您可能需要使用提供平行處理解決方案的分析工具。例如,您可以使用以下分析工具來分析和處理存取日誌: