如何使用 X-Amzn-Trace-Id 跟踪 Application Load Balancer 请求?

上次更新日期:2021 年 2 月 3 日

如何通过我的 Application Load Balancer 和 Web 服务器记录 X-Amzn-Trace-Id 来跟踪请求?

简短描述

在 Elastic Load Balancing (ELB) 中,当 Application Load Balancer 处理请求时,跟踪信息将添加到 X-Amzn-Trace-Id 标头。例如:

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

您可以记录此标识符,然后使用它来解决与您的负载均衡器相关的问题。例如,您可以使用 X-Amzn-Trace-Id 标头确认在短时间内从同一客户端接收多个类似请求的时间。如果您在堆栈中有多个层,则还可以使用 X-Amzn-Trace-Id 标头跟踪所有层中的请求。

解决方法

针对常见 Web 服务器配置(Apache、Tomcat、NGINX 或 IIS)使用以下步骤以记录 X-Amzn-Trace-Id 标头:

Apache

1.    在您的首选文本编辑器中打开 Apache 配置文件(Amazon Linux 中的 /etc/httpd/conf/httpd.conf)。

2.    在 LogFormat 部分中,添加选项 %{X-Amzn-Trace-Id}i,如下所示:

LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-Amzn-Trace-Id}i\"" combined

3.    重新启动 Apache 服务以应用您的更改,如下所示:

sudo service apache restart

Tomcat

1.    在您的首选文本编辑器中打开 Tomcat 配置文件(Amazon Linux 中的 /etc/tomcat7/server.xml )。    

2.    在 org.apache.catalina.valves.AccessLogValve 类中,添加选项 %{X-Amzn-Trace-Id}i ,如下所示:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

      prefix="localhost_access_log." suffix=".txt"

      pattern="%h %l %u %t &quot;%r&quot; %s %b %{X-Amzn-Trace-Id}i" />

3.    重新启动 Tomcat 服务以应用您的更改,如下所示:

sudo service tomcat7 restart

NGINX

1.    在您的首选文本编辑器中打开 NGINX 配置文件(Amazon Linux 中的 /etc/nginx/nginx.conf)。

2.    在 log_format 部分中,添加选项 $http_x_amzn_trace_id,如下所示:

log_format  main  '"$http_x_forwarded_for" $remote_addr - $remote_user [$time_local] "$request" '

    '$status $body_bytes_sent "$http_referer" '

    '"$http_user_agent" "$http_x_amzn_trace_id"';

3.    重新启动 Apache 服务以应用您的更改,如下所示:

sudo service nginx restart

互联网信息服务 (IIS)

1.    打开 IIS 管理器。

2.    选择您的服务器的名称。

3.    选择 Logging

4.    选择 Select Fields (选项字段)

5.    选择 Add Field(添加字段)

6.    在对话框中,对于 Field Name (字段名称),输入 X-Amzn-Trace-Id。对于 Source Type (源类型),输入 Request Header (请求标头)。对于 Source (源),输入 X-Amzn-Trace-Id

7.    选择 Apply(应用) 以应用更改。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?