

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

# Application Load Balancer 上的請求追蹤
<a name="load-balancer-request-tracing"></a>

當負載平衡器收到用戶端的請求時，在將請求傳送到目標之前，它會新增或更新 **X-Amzn-Trace-Id** 標頭。負載平衡器和目標之間的任何服務或應用程式也可以新增或更新此標頭。

您可以使用請求追蹤來追蹤從用戶端到目標或其他服務的 HTTP 請求。如果您啟用存取日誌，則會記錄 **X-Amzn-Trace-Id** 標頭的內容。如需詳細資訊，請參閱[Application Load Balancer 的存取日誌](load-balancer-access-logs.md)。

## 語法
<a name="request-tracing-syntax"></a>

**X-Amzn-Trace-Id** 標頭包含如下格式的欄位：

```
{{Field}}={{version}}-{{time}}-{{id}}
```

*欄位*  
欄位的名稱。支援的值為 `Root` 和 `Self`。  
應用程式可以新增任意欄位供自己使用。負載平衡器會保留這些欄位，但不使用。

*version*  
版本號碼。此值為 1。

*time*  
epoch 時間 (以秒為單位)。此值長度為 8 個十六進位數字。

*id*  
追蹤識別符。此值為 24 個十六進位數字。

**範例**  
如果傳入請求上沒有 **X-Amzn-Trace-Id** 標頭，負載平衡器會產生含有 `Root` 欄位的標頭，然後轉送請求。例如：

```
X-Amzn-Trace-Id: Root=1-67891233-abcdef012345678912345678
```

如果 **X-Amzn-Trace-Id** 標頭存在且有 `Root` 欄位，負載平衡器會插入 `Self` 欄位，然後轉送請求。例如：

```
X-Amzn-Trace-Id: Self=1-67891233-12456789abcdef012345678;Root=1-67891233-abcdef012345678912345678
```

如果應用程式新增含有 `Root` 欄位和自訂欄位的標頭，負載平衡器會保留這兩個欄位、插入 `Self` 欄位，然後轉送請求：

```
X-Amzn-Trace-Id: Self=1-67891233-12456789abcdef012345678;Root=1-67891233-abcdef012345678912345678;CalledFrom=app
```

如果 **X-Amzn-Trace-Id** 標頭存在且有 `Self` 欄位，負載平衡器會更新 `Self` 欄位的值。

## 限制
<a name="request-tracing-limits"></a>
+ 負載平衡器會在收到傳入請求時，而不是在收到回應時更新標頭。
+ 如果 HTTP 標頭大於 7 KB，負載平衡器會使用 `Root` 欄位重寫 **X-Amzn-Trace-Id** 標頭。
+ 使用 WebSocket 時，只有等到升級請求成功時才能追蹤。