

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 请求 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`。  
应用程序可以出于自身目的添加任意字段。负载均衡器将保留这些字段，但不会使用它们。

*版本*  
版本号。该值为 1。

*时间*  
新纪元时间 (用秒表示)。该值的长度为 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** 标头。
+ 使用 WebSockets，您只能在升级请求成功之前进行跟踪。