

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

# Network Load Balancer 的存取日誌
<a name="load-balancer-access-logs"></a>

Elastic Load Balancing 提供存取日誌，可擷取使用 Network Load Balancer 建立之 TLS 連線的詳細資訊。您可以使用這些存取日誌來分析流量模式和排除問題。

**重要**  
 雖然傳統的「舊版」存取日誌 （本節中所述） 仍然可用，但 Network Load Balancer 現在透過 CloudWatch Logs 提供增強型記錄選項。CloudWatch Logs 提供更靈活的交付選項，包括 Amazon CloudWatch Logs、Amazon Data Firehose 和 Amazon Simple Storage Service。若要設定這些改進的記錄選項，請造訪負載平衡器的***整合***索引標籤。如需 CloudWatch Logs 的詳細資訊，請參閱 [Network Load Balancer 的 CloudWatch 日誌](load-balancer-cloudwatch-logs.md)。

**重要**  
只有在負載平衡器具有 TLS 接聽程式，且日誌僅包含 TLS 請求的相關資訊時，才會建立存取日誌。盡最大努力存取日誌記錄請求。建議您使用存取日誌來了解請求的性質，而不是為了全面解釋所有請求。

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

您可利用 Amazon S3 受管的加密金鑰 (SSE-S3) 來啟用伺服器端加密，或針對 S3 儲存貯體搭配客戶受管金鑰 (SSE-KMS CMK) 採用金鑰管理服務。每個存取日誌檔在存放於 S3 儲存貯體之前會自動加密，並於您存取它時解密。存取加密或未加密日誌檔的方式沒有不同，所以您不需要採取任何動作。每個日誌檔案都會使用唯一的金鑰進行加密，該金鑰本身會使用定期輪換的 KMS 金鑰進行加密。如需詳細資訊，請參閱《[Amazon S3 使用者指南》中的指定 Amazon S3 加密 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-s3-encryption.html) 和[使用 AWS KMS (SSE-KMS) 指定伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html)。 *Amazon S3 *

存取日誌無需額外收費。您將需支付 Amazon S3 的儲存成本，但 Elastic Load Balancing 傳送日誌檔到 Amazon S3 所使用的頻寬不需付費。如需儲存成本的詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)。

**Topics**
+ [存取日誌檔](#access-log-file-format)
+ [存取日誌項目](#access-log-entry-format)
+ [處理存取日誌檔](#log-processing-tools)
+ [啟用存取日誌](enable-access-logs.md)
+ [停用存取日誌](disable-access-logs.md)

## 存取日誌檔
<a name="access-log-file-format"></a>

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 使用者指南*》的[管儲存生命週期](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)。

## 存取日誌項目
<a name="access-log-entry-format"></a>

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


| 欄位 | 說明 | 
| --- | --- | 
| type | 接聽程式的類型。支援的值為 `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` 欄位中。如果沒有 TLS 交握或 TLS 交握失敗，此值會設為 `-`。 | 
| received\_bytes | 負載平衡器從用戶端接收的解密後位元數。 | 
| sent\_bytes | 負載平衡器向用戶端傳送的加密前位元數。 | 
| incoming\_tls\_alert | 負載平衡器從用戶端接收的 TLS 提醒整數值 (若有)。否則，此值會設為 `-`。 | 
| chosen\_cert\_arn | 向用戶端所提供憑證的 ARN。如果未傳送有效的用戶端 hello 訊息，此值會設為 `-`。 | 
| chosen\_cert\_serial | 保留以供日後使用。此值一律設定為 `-`。 | 
| tls\_cipher | 與用戶端交涉的密碼套件，採用 OpenSSL 格式。如果 TLS 交涉未完成，此值會設為 `-`。 | 
| tls\_protocol\_version | 與用戶端交涉的 TLS 通訊協定，採用字串格式。可能值為 `tlsv10`、`tlsv11`、`tlsv12` 與 `tlsv13`。如果 TLS 交涉未完成，此值會設為 `-`。 | 
| tls\_keyexchange | TLS 或 PQ-TLS 交握期間使用的金鑰交換。如果 TLS 或 PQ-TLS 交涉未完成，此值會設為 `-`。 | 
| domain\_name | server\_name 副檔名的值位於用戶端 hello 訊息中。此值為 URL 編碼格式。如果沒有傳送有效的用戶端 hello 訊息或延伸模組不存在，則此值會設為 `-`。 | 
| alpn\_fe\_protocol | 與用戶端交涉的應用程式通訊協定，採用字串格式。可能的值為 `h2`、`http/1.1` 和 `http/1.0`。如果在 TLS 接聽程式中未設定 ALPN 政策、找不到相符的通訊協定，或未傳送有效的通訊協定清單，則此值會設為 `-`。 | 
| alpn\_be\_protocol | 與目標交涉的應用程式通訊協定，採用字串格式。可能的值為 `h2`、`http/1.1` 和 `http/1.0`。如果在 TLS 接聽程式中未設定 ALPN 政策、找不到相符的通訊協定，或未傳送有效的通訊協定清單，則此值會設為 `-`。 | 
| alpn\_client\_preference\_list | 用戶端您好訊息中的 application\_layer\_protocol\_negotiation 延伸的值。此值為 URL 編碼格式。每個通訊協定用雙引號括起來，並以逗號分隔。如果 TLS 接聽程式中未設定 ALPN 政策、未傳送任何有效的用戶端 hello 訊息，或延伸模組不存在，則此值會設為 `-`。如果字串長度超過 256 個位元組，則會被截斷。 | 
| tls\_connection\_creation\_time | 在 TLS 連線開始時記錄的時間，採用 ISO 8601 格式。 | 

### 範例日誌項目
<a name="access-log-entry-examples"></a>

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

以下是不含 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
- - - 2018-12-20T02:59:30
```

以下是具有 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" 2020-04-01T08:51:20
```

## 處理存取日誌檔
<a name="log-processing-tools"></a>

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

如果您的網站上有許多需求，負載平衡器產生的日誌檔可能有好幾 GB 的資料。您可能無法逐行處理這麼龐大的資料。因此，您可能需要使用提供平行處理解決方案的分析工具。例如，您可以使用以下分析工具來分析和處理存取日誌：
+ Amazon Athena 是一種互動式查詢服務，可讓您使用標準 SQL 輕鬆分析 Amazon S3 中的資料。如需詳細資訊，請參閱《*Amazon Athena 使用者指南*》的[查詢 Network Load Balancer 日誌](https://docs.aws.amazon.com/athena/latest/ug/networkloadbalancer-classic-logs.html)。
+ [Loggly](https://documentation.solarwinds.com/en/success_center/loggly/content/admin/s3-ingestion-auto.htm)
+ [Splunk](https://splunk.github.io/splunk-add-on-for-amazon-web-services/)
+ [Sumo Logic](https://www.sumologic.com/application/elb/)