如何記錄 X-Amzn-Trace-Id 以透過 Application Load Balancer 和 Web 伺服器追蹤請求?
簡短描述
在 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 標頭來追蹤所有圖層的要求。
解決方法
對常見的網頁伺服器設定 (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 "%r" %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. 重新啟動 NGINX 服務以套用您的變更,如下所示:
sudo service nginx restart
網際網路資訊服務 (IIS)
1. 開啟 IIS Manager。
2. 選取伺服器名稱。
3. 選擇日誌記錄。
4. 選擇選取欄位。
5. 選擇新增欄位。
6. 在對話方塊中,為欄位名稱輸入 X-Amzn-Trace-Id。為來源類型輸入請求標頭。為來源輸入 X-Amzn-Trace-Id。
7. 選擇套用以套用變更。
相關資訊
Application Load Balancer 的要求追蹤
Application Load Balancer 的存取日誌