Network Load Balancer 存取日誌 - Elastic Load Balancing

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

Network Load Balancer 存取日誌

Elastic Load Balancing 提供存取日誌,可針對傳送到 Network Load Balancer 的 TLS 請求。您可以使用這些存取日誌來分析流量模式和排除問題。

重要

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

存取記錄是 Elastic Load Balancing 的選用功能,預設為停用。對負載平衡器啟動存取日誌記錄之後,Elastic Load Balancing 會以壓縮檔案的形式擷取日誌,並存放在您指定的 Amazon S3 儲存貯體中。您可以隨時停用存取記錄。

您可以使用 Amazon S3 受管的加密金鑰 (SSE-S3) 或使用 S3 儲存貯體的客戶受管金鑰 (SSE-KMS) 進行金鑰管理服務。每個存取日誌檔在存放於 S3 儲存貯體之前會自動加密,並於您存取它時解密。存取加密或未加密日誌檔的方式沒有不同,所以您不需要採取任何動作。系統會使用唯一的金鑰來加密每個日誌檔,金鑰本身會以定期輪換的主要金鑰來加密。如需詳細資訊,請參閱 Amazon S3管AWS KMS (SSE-KMS) 的伺服器端加密 SSE-S3

存取日誌無需額外收費。您需要支付 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_net.load-balancer-id_end-time_random-string.log.gz
bucket

S3 儲存貯體的名稱。

prefix

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

aws-account-id

擁有者的AWS 帳戶 ID。

region

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

yyyy/mm/dd

傳遞日誌的日期。

load-balancer-id

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

end-time

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

random-string

系統產生的隨機字串。

以下是日誌檔名稱範例:

s3://my-bucket/prefix/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2020/05/01/123456789012_elasticloadbalancing_us-east-2_net.my-loadbalancer.1234567890abcdef_20200501T0000Z_20sg8hgm.log.gz

日誌檔案可存放於儲存貯體任意長時間,但您也可以定義 Amazon S3 生命週期規則,自動封存或刪除日誌檔案。如需詳細資訊,請參閱 Amazon S3 使用者指南的管理儲存生命週期

存取日誌項目

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

欄位 Description (描述)

類型

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

版本

日誌項目的版本。目前版本是 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 通訊協定,採用字串格式。可能的值為 tlsv10tlsv11tlsv12。若 TLS 交涉未完成,此值設定為 -。

tls_named_group

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

domain_name

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

alpn_fe_protocol

與用戶端交涉的應用程式通訊協定,採用字串格式。可能的值為 h2http/1.1http/1.0。如果 TLS 接聽程式中沒有設定任何 ALPN 政策、找不到相符的通訊協定,或是沒有傳送有效的通訊協定清單,則此值會設定為 -。

alpn_be_protocol

與目標交涉的應用程式通訊協定,採用字串格式。可能的值為 h2http/1.1http/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 儲存貯體。擁有儲存貯體的帳戶與擁有負載平衡器的帳戶可以不同。儲存貯體必須符合下列需求。

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

  • 您指定的前綴不得包含AWS日誌。我們在您指定的儲存貯體名稱和前綴之後,增加了以AWS Logs 開頭的檔案名稱部分。

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

    { "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::my-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-bucket/AWSLogs/account-ID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } } ] }

在先前的政策中aws:SourceAccount,對指定要將日誌交付至此儲存貯體的帳戶編號清單。對於 aws:SourceArn,指定產生日誌之資源的 ARN 清單,格式為 arn:aws:logs:source-region:source-account-id:*

加密

您可以使用下列其中一種方式為 Amazon S3 存取日誌儲存貯體啟用伺服器端加密:

  • Amazon S3 受管金鑰 (SSE-S3)

  • AWS KMS儲存在中的金鑰AWS Key Management Service (SSE-KMS) †

† 透過 Network Load Balancer 存取記錄,您無法使用AWS受管金鑰,而且必須使用客戶受管金鑰。

如需詳細資訊,請參閱 Amazon S3管AWS KMS (SSE-KMS) 的伺服器端加密 SSE-S3

金鑰原則必須允許服務加密和解密記錄檔。 政策範例如下。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] }

啟用存取日誌

對負載平衡器啟動存取日誌記錄時,您必須指定 S3 儲存貯體。請確定您擁有此儲存貯體,且已設定此儲存貯體的所需儲存貯體政策。如需詳細資訊,請參閱儲存貯體需求

使用主控台啟用存取記錄
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選取您負載平衡器的名稱來開啟其詳細資訊頁面。

  4. 在「性」標籤上,選擇「編輯」。

  5. Edit load balancer attributes (編輯負載平衡器屬性) 頁面上,執行下列操作:

    1. 對於監控,請開啟存取記錄

    2. 選擇瀏覽 S3,然後選取要使用的儲存貯體。或者,輸入 S3 儲存貯體的位置,包括任何前置詞。

    3. 選擇 Save changes (儲存變更)。

使用 AWS CLI 啟用存取記錄

使用 modify-load-balancer-attributes 命令。

停用存取記錄

您可以隨時對負載平衡器停用存取記錄。在您停用存取記錄之後,存取日誌會保留在 S3 儲存貯體中,直到您刪除它們。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的使用儲存體。

使用主控台停用存取記錄
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選取您負載平衡器的名稱來開啟其詳細資訊頁面。

  4. 在「性」標籤上,選擇「編輯」。

  5. 對於監控,請關閉存取記錄

  6. 選擇 Save changes (儲存變更)。

使用 AWS CLI 停用存取記錄

使用 modify-load-balancer-attributes 命令。

處理存取日誌檔

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

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