ALB支援鏈路追蹤功能。開啟該功能後,ALB會在轉寄請求時自動注入追蹤頭部,協助使用者獲得完整的請求追蹤資料,包括請求來源、經過的節點、回應時間等資訊,從而快速定位和解決分布式架構下的效能瓶頸。
背景資訊
鏈路追蹤為分布式應用的開發人員提供了完整的調用鏈路還原、調用請求量統計、鏈路拓撲以及應用依賴分析等工具,可以協助開發人員快速分析和診斷分布式應用架構下的效能瓶頸。
一條鏈路資料對應一條調用鏈(Trace)。在廣義上,一個調用鏈代表一個事務或者流程在分布式系統中的執行過程,由多個Span組成的一個有向非循環圖(DAG),每個Span代表調用鏈中被命名並計時的連續性執行片段。
開啟ALB鏈路追蹤功能後,ALB會在轉寄請求時自動注入或更新HTTP追蹤頭部,追蹤資料上報至阿里雲可觀測鏈路 OpenTelemetry 版。支援OpenTelemetry和Zipkin兩種鏈路追蹤方式。
鏈路追蹤方式
OpenTelemetry
當ALB開啟鏈路追蹤功能且選擇OpenTelemetry類型時,ALB會在將請求轉寄到後端伺服器之前,添加或更新HTTP頭部中的traceparent欄位。traceparent欄位的格式為:{version}-{traceid}-{parentid}-{traceflags}。各部分含義如下表所示。
欄位 | 含義 | 格式 |
| 使用的OpenTelemetry版本 | 始終為 |
| 標識本次追蹤的ID | 32位十六進位數字 |
| 標識追蹤鏈路上本節點的ID | 16位十六進位數字 |
| 標識對本次請求是否進行採樣 |
|
情境一:請求不攜帶traceparent
當用戶端發送的要求標頭部不攜帶traceparent欄位時,ALB會產生完整的traceparent欄位並插入HTTP頭部。
情境二:請求已攜帶traceparent
當上遊服務已在要求標頭中攜帶traceparent欄位時,ALB會繼承version、traceid和traceflags,僅產生新的parentid。
欄位值的變化對照:
部分 | 上遊請求值 | ALB轉寄值 | 處理方式 |
|
|
| 繼承 |
|
|
| 繼承 |
|
|
| 新產生 |
|
|
| 繼承 |
Zipkin
當ALB開啟鏈路追蹤功能且選擇Zipkin類型時,ALB會在將請求轉寄到後端伺服器之前,添加或更新HTTP頭部中的X-B3-*欄位。各欄位含義如下表所示。
欄位名 | 含義 | 格式 |
| 標識本次追蹤的ID | 16位十六進位數字 |
| 標識追蹤鏈路上本節點的ID | 16位十六進位數字 |
| 標識追蹤鏈路上前一個節點的ID | 16位十六進位數字 |
| 標識對本次請求是否進行採樣 |
|
情境一:請求不攜帶追蹤頭部
當用戶端發送的要求標頭部不攜帶X-B3-*欄位時,ALB會作為追蹤鏈路的起始節點,產生X-B3-TraceId、X-B3-SpanId和X-B3-Sampled三個欄位並插入HTTP頭部。由於鏈路上沒有上遊節點,轉寄請求中不包含X-B3-ParentSpanId欄位。
情境二:請求已攜帶追蹤頭部
當上遊服務已在要求標頭中攜帶完整的X-B3-*欄位時,ALB會繼承X-B3-TraceId和X-B3-Sampled的值,產生新的X-B3-SpanId,並將上遊請求中的X-B3-SpanId作為X-B3-ParentSpanId傳遞給後端伺服器。
欄位值的變化對照:
欄位 | 上遊請求值 | ALB轉寄值 | 處理方式 |
|
|
| 繼承 |
|
|
| 新產生 |
|
|
| 取上遊的SpanId |
|
|
| 繼承 |
適用範圍
步驟一:開啟鏈路追蹤
登入ALB控制台,選擇執行個體所屬的地區,找到目標執行個體並單擊執行個體ID。
單擊監聽頁簽,找到目標監聽,單擊監聽ID。
在監聽詳情頁簽的鏈路追蹤地區,開啟鏈路追蹤開關。
在開啟鏈路追蹤對話方塊,完成以下配置,單擊儲存。
開通服務
開通可觀測鏈路OpenTelemetry版:首次使用需勾選服務合約確認開通。
建立訪問日誌(若目標ALB執行個體未建立)
項目Project:Log Service中的資源嵌入式管理單元,用於資源隔離和控制。
選擇現有 Project:在下拉框中選擇一個Project。
建立 Project:在文字框中輸入建立Project名稱。
日誌庫Logstore:Log Service中日誌資料的採集、儲存和查詢單元。
選擇現有 Logstore:在下拉框中選擇一個Logstore。
建立 Logstore:在文字框中輸入建立Logstore名稱。Project選擇建立時,Logstore也需選擇建立。
配置鏈路追蹤
鏈路追蹤類型:支援選擇OpenTelemetry(W3C)或Zipkin(B3)。
採樣率:取值範圍1~100,預設值為100。通過設定採樣率來調整鏈路上報量。
服務關聯角色建立須知:執行此操作時,系統將自動建立服務關聯角色。
步驟二:查看鏈路資料
登入用戶端終端,測試與後端伺服器的連通性。可參考ALB快速實現IPv4服務的負載平衡。
登入ALB控制台,選擇執行個體所屬的地區,找到目標執行個體並單擊執行個體ID。
單擊監聽頁簽,找到目標監聽,單擊監聽ID。
在監聽詳情頁簽的鏈路追蹤地區,單擊調用鏈分析右側的查看,前往可觀測鏈路 OpenTelemetry版控制台查看鏈路資料。
頁面頂部查詢欄自動帶入
attributes.app_lb_id和attributes.slb_vport篩選條件,左側快捷篩選區域支援按狀態、耗時範圍和應用程式名稱進行過濾。
更多資訊
關閉鏈路追蹤
鏈路追蹤依賴訪問日誌,關閉訪問日誌會導致鏈路追蹤不可用,請謹慎關閉。關閉鏈路追蹤後,訪問日誌仍保持開啟,如無須使用請手動關閉。
執行個體下所有監聽的鏈路追蹤均關閉後,將停止向可觀測鏈路 OpenTelemetry 版投遞調用鏈資料。
計費說明
使用鏈路追蹤功能,會預設開通阿里雲可觀測鏈路 OpenTelemetry 版服務和訪問日誌服務。開通使用後,會產生資料上報、鏈路儲存以及Log Service等費用。
ALB鏈路追蹤支援的地區
公用雲端支援的地區
|
地區 |
地區 |
|
中國 |
華東1(杭州)、華東2(上海)、華南1(深圳)、西南1(成都)、華北1(青島)、華北2(北京)、華北3(張家口)、華北6(烏蘭察布)、中國香港、華南3(廣州)、華南2(河源) |
|
亞太地區 |
新加坡、馬來西亞(吉隆坡)、日本(東京)、印尼(雅加達) |
|
歐美地區 |
英國(倫敦)、德國(法蘭克福)、美國(維吉尼亞)、美國(矽谷) |