

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

# 请求 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。

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