全部產品
Search
文件中心

Container Service for Kubernetes:實現Nginx Ingress Controller組件的鏈路追蹤

更新時間:May 22, 2025

ACK提供了Nginx-Ingress-tracing鏈路追蹤功能,支援將叢集的Nginx Ingress Controller組件的鏈路資訊上報至Managed Service for OpenTelemetryManaged Service for OpenTelemetry可以對鏈路資訊進行即時彙總計算和持久化,形成鏈路明細、即時拓撲等監控資料,以便您進行Nginx Ingress Controller組件的問題排查與診斷。

前提條件

版本說明

在不同版本的Nginx Ingress Controller組件中,鏈路追蹤的支援情況各不相同,您需要根據對應版本選擇相應的配置方式。

Nginx Ingress Controller版本

OpenTelemetry

OpenTracing

≥ v1.10.2-aliyun.1

支援

不支援

v1.9.3-aliyun.1

支援

支援

v1.8.2-aliyun.1

支援

支援

< v1.8.2-aliyun.1

不支援

支援

操作步驟

您需要根據實際的Nginx Ingress Controller版本支援情況選擇相應的操作步驟。

OpenTelemetry

步驟一:在Managed Service for OpenTelemetry中擷取存取點資訊

新版控制台

  1. 登入可觀測鏈路 OpenTelemetry 版控制台,在左側導覽列單擊接入中心

  2. 開源架構地區單擊OpenTelemetry卡片。

  3. 在彈出的OpenTelemetry面板中選擇資料需要上報的地區。

  4. 記錄gRPC上報方式的存取點資訊。ot-新版-中文.jpg

    說明

    因為Nginx Ingress Controller組件部署在阿里雲上,且組件所在地區與Managed Service for OpenTelemetry接入配置中的地區一致,所以使用阿里雲VPC網路存取點,否則選擇公網存取點。

舊版控制台

  1. 登入可觀測鏈路 OpenTelemetry 版控制台

  2. 在左側導覽列單擊叢集配置,然後在右側頁面單擊存取點資訊頁簽。

  3. 在頁面頂部選擇需要接入的地區。

  4. 叢集資訊地區開啟顯示Token開關,在用戶端採集工具地區單擊OpenTelemetry,然後記錄gRPC上報方式的存取點資訊。

    ot-舊版-中文.jpg

    說明

    因為Nginx Ingress Controller組件部署在阿里雲上,且組件所在地區與Managed Service for OpenTelemetry接入配置中的地區一致,所以使用阿里雲VPC網路存取點,否則選擇公網存取點。

步驟二:在ACK的Ingress中開啟Managed Service for OpenTelemetry服務

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態

  3. 在配置項頁面上方設定命名空間為kube-system,然後在名稱搜尋方塊中搜尋nginx-ingress-controller,然後單擊編輯。

  4. 編輯頁面上方,選中nginx-ingress-controller容器,並在環境變數頁簽中單擊新增添加以下環境變數。

    類型

    變數名稱

    變數/變數引用

    描述

    自訂

    OTEL_EXPORTER_OTLP_HEADERS

    authentication=<鑒權Token>

    使用步驟一:在可觀測鏈路 OpenTelemetry 版中擷取存取點資訊中擷取的鑒權Token,例如authentication=bfXXXXXXXe@7bXXXXXXX1_bXXXXXe@XXXXXXX1

    image

    添加完成後,單擊編輯頁面右側欄的更新,然後在彈框中單擊確定

  5. 在左側導覽列,選擇組態管理 > 配置項

  6. 配置項頁面上方設定命名空間為kube-system,然後在名稱搜尋方塊中搜尋nginx-configuration,然後單擊nginx-configuration操作列的編輯

  7. 編輯面板單擊添加增加以下配置,然後單擊確定

    名稱

    描述

    取值

    樣本值

    enable-opentelemetry

    是否啟用OpenTelemetry鏈路追蹤。

    • true:表示啟用。

    • false:表示不啟用。

    true

    main-snippet

    -

    env OTEL_EXPORTER_OTLP_HEADERS;

    env OTEL_EXPORTER_OTLP_HEADERS;

    otel-service-name

    服務名稱。

    自訂。

    nginx-ingress

    otlp-collector-host

    gRPC上報點網域名稱。

    使用步驟一:在可觀測鏈路 OpenTelemetry 版中擷取存取點資訊中擷取的阿里雲VPC網路存取點,並刪除http://和連接埠號碼,例如tracing-analysis-XX-XX-XXXXX.aliyuncs.com

    tracing-analysis-XX-XX-XXXXX.aliyuncs.com

    otlp-collector-port

    gRPC上報點連接埠。

    根據實際值填寫。

    8090

    opentelemetry-trust-incoming-span

    是否信任來自其他服務或系統的調用鏈。

    • true:表示信任。

    • false:表示不信任。

    true

    opentelemetry-operation-name

    調用鏈Span格式。

    HTTP $request_method $service_name $uri

    HTTP $request_method $service_name $uri

    otel-sampler

    採樣規則。

    參數資訊,請參見opentelemetry

    TraceIdRatioBased

    otel-sampler-ratio

    採樣率。

    取值為0~1之間,最多可設定到小數點後兩位。0表示不採樣,1表示全部採樣。

    更多參數資訊,請參見opentelemetry

    0.1

    otel-sampler-parent-based

    是否繼承上遊採樣標識。

    • false:預設值,表示不繼承上遊採樣標識。otel-sampler和otel-sampler-ratio將會生效。

    • true:表示繼承上遊採樣標識。otel-sampler和otel-sampler-ratio不會生效,會複用上遊採樣標識。

    更多參數資訊,請參見opentelemetry

    false

步驟三:在Managed Service for OpenTelemetry上查看調用鏈路資料

  1. 登入可觀測鏈路 OpenTelemetry 版控制台

  2. 在控制台左側導覽列中單擊應用列表

  3. 應用列表頁面頂部選擇地區,然後單擊應用程式名稱nginx-ingress

  4. 在應用詳情頁面查看鏈路資訊。

    • 應用概覽頁簽,查看請求數、錯誤數等資訊。應用概覽-中.jpg

    • 調用鏈分析頁簽,查看Trace列表、平均耗時等資訊。調用鏈分析-中.jpg

    • 調用鏈分析頁簽,單擊TraceId,查看Trace詳情。trace詳情-中.jpg

OpenTracing

步驟一:在Managed Service for OpenTelemetry中擷取存取點資訊

新版控制台

  1. 登入可觀測鏈路 OpenTelemetry 版控制台,在左側導覽列單擊接入中心

  2. 開源架構地區單擊Zipkin卡片。

    說明

    根據實際使用的用戶端採集工具擷取存取點資訊,本文以Zipkin為例。

  3. 在彈出的Zipkin面板中選擇需要上報資料的地區。

  4. 記錄存取點資訊。zipkin-新版-中.jpg

    說明

    因為Nginx Ingress Controller組件部署在阿里雲上,且組件所在地區與Managed Service for OpenTelemetry接入配置中的地區一致,所以使用阿里雲VPC網路存取點,否則選擇公網存取點。

舊版控制台

  1. 登入可觀測鏈路 OpenTelemetry 版控制台

  2. 在左側導覽列單擊叢集配置,然後在右側頁面單擊存取點資訊頁簽。

  3. 在頁面頂部選擇需要接入的地區。

  4. 叢集資訊地區開啟顯示Token開關,在用戶端採集工具地區單擊Zipkin,然後記錄存取點資訊。

    zipkin-舊版-中文.jpg

    說明

    因為Nginx Ingress Controller組件部署在阿里雲上,且組件所在地區與Managed Service for OpenTelemetry接入配置中的地區一致,所以使用阿里雲VPC網路存取點,否則選擇公網存取點。

步驟二:在ACK的Ingress中開啟Managed Service for OpenTelemetry服務

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇組態管理 > 配置項

  3. 配置項頁面上方設定命名空間為kube-system,然後在名稱搜尋方塊中搜尋nginx-configuration,然後單擊nginx-configuration操作列的編輯

  4. 編輯面板單擊添加增加以下配置,然後單擊確定

    名稱

    描述

    取值

    樣本值

    enable-opentracing

    是否開啟鏈路追蹤。

    • true:開啟鏈路追蹤。

    • false:關閉鏈路追蹤。

    true

    zipkin-service-name

    服務名稱。

    自訂。

    nginx-ingress

    zipkin-collector-host

    上報點網域名稱。

    修改步驟一:在可觀測鏈路 OpenTelemetry 版中擷取存取點資訊中擷取的存取點資訊,去掉http://,並在末尾加上問號。樣本如下:

    • 原始存取點資訊為http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_******_******/api/v1/spans

    • 修改後並輸入值為tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_******_******/api/v1/spans?

    tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_******_******/api/v1/spans?

    opentracing-trust-incoming-span

    是否信任來自其他服務或系統的調用鏈。

    • true:表示信任。

    • false:表示不信任。

    true

    zipkin-sample-rate

    採樣率。

    取值為0~1之間,最多可設定到小數點後兩位。0表示不採樣,1表示全部採樣。

    0.1

步驟三:在Managed Service for OpenTelemetry上查看調用鏈路資料

  1. 登入可觀測鏈路 OpenTelemetry 版控制台

  2. 在控制台左側導覽列中單擊應用列表

  3. 應用列表頁面頂部選擇地區,然後單擊應用程式名稱nginx

  4. 在應用詳情頁面左側導覽列中單擊介面調用,然後在右側地區,查看鏈路資訊。

    • 概覽頁簽中,展示了鏈路拓撲資訊。3.jpg

    • 單擊調用鏈路頁簽,查看該應用耗時最長的至多100個調用鏈路。關於更多鏈路資料,請參見介面調用調用鏈路

    • 調用鏈路頁簽中,單擊TraceId,查看鏈路詳情。2.jpg

切換OpenTelemetry透傳協議(可選)

採取OpenTelemetry方式實現Nginx Ingress Controller鏈路追蹤時,OpenTelemetry預設識別並向下遊傳遞W3C Trace Context格式的Trace上下文。如果您的前端應用和後端應用採用了其他協議,例如Jaeger或者Zipkin,需要修改OpenTelemetry的透傳格式,才能使前端應用、Nginx Ingress以及後端應用的調用鏈串聯起來。下面介紹如何修改Nginx Ingress Controller所使用的OpenTelemetry透傳協議。

  1. 請在步驟二第4步:在環境變數中添加OTEL_EXPORTER_OTLP_HEADERS的基礎上添加OTEL_PROPAGATORS環境變數,儲存後重新部署nginx-ingress-controller。

    環境變數名

    說明

    OTEL_PROPAGATORS

    tracecontext,baggage,b3,jaeger

    透傳格式。更多資訊,請參見OpenTelemetry指定透傳Header格式

  2. 請在步驟二第7步:添加nginx-configuration配置的基礎上修改main-snippet配置,使OTEL_PROPAGATORS環境變數生效。

    配置名

    說明

    main-snippet

    env OTEL_EXPORTER_OTLP_HEADERS; env OTEL_PROPAGATORS;

    載入環境變數。

相關文檔