阿里雲服務網格ASM支援將指標資料上報到阿里雲可觀測鏈路OpenTelemetry版。您可以通過可觀測鏈路OpenTelemetry版控制台查看調用資訊和基於調用資訊產生的拓撲圖等。本文介紹如何將鏈路追蹤資料擷取到阿里雲可觀測鏈路OpenTelemetry版。
前提條件
已建立ASM執行個體。具體操作,請參見建立ASM執行個體。
已添加ACK叢集到ASM執行個體。具體操作,請參見添加叢集到ASM執行個體和升級ASM執行個體。
阿里雲帳號已開通阿里雲可觀測鏈路OpenTelemetry版。關於如何計費,請參見計費規則。
操作步驟
請您按照ASM執行個體版本選擇對應的頁簽進行操作。
ASM執行個體版本為1.17.2.35以下
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在基本資料頁面,單擊功能設定,在功能設定更新面板,選中啟用鏈路追蹤,設定採樣百分比,採樣方式選擇阿里雲可觀測鏈路OpenTelemetry版,然後單擊確定。
在左側導覽列,選擇
,跳轉至可觀測鏈路OpenTelemetry版控制台查看鏈路追蹤資訊。關於鏈路追蹤的更多資訊,請參見什麼是可觀測鏈路OpenTelemetry版。
若您不再需要此功能,可以在功能設定更新面板取消選中啟用鏈路追蹤,然後單擊確定。
ASM執行個體版本為1.17.2.35及以上,1.18.0.124以下
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在鏈路追蹤頁面,單擊將服務網格鏈路追蹤資料擷取到阿里雲可觀測鏈路OpenTelemetry版,然後在確認對話方塊,單擊確定。
單擊開啟阿里雲可觀測鏈路OpenTelemetry版控制台,查看鏈路追蹤資訊。
關於鏈路追蹤的更多資訊,請參見什麼是可觀測鏈路OpenTelemetry版。
若您不再需要此功能,可以在鏈路追蹤頁面,單擊關閉採集,然後在確認對話方塊,單擊確定。
ASM執行個體版本為1.18.0.124及以上
步驟一:部署OpenTelemetry Operator
在ACK叢集對應的KubeConfig環境,執行以下命令,建立opentelemetry-operator-system命名空間。
kubectl create namespace opentelemetry-operator-system
執行以下命令,使用Helm在opentelemetry-operator-system命名空間下安裝OpenTelemetry Operator。
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm install --namespace=opentelemetry-operator-system opentelemetry-operator open-telemetry/opentelemetry-operator \ --set "manager.collectorImage.repository=otel/opentelemetry-collector-k8s" \ --set admissionWebhooks.certManager.enabled=false \ --set admissionWebhooks.autoGenerateCert.enabled=true
執行以下命令,檢查opentelemetry-operator是否正常運行。
kubectl get pod -n opentelemetry-operator-system
預期輸出:
NAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 1m
STATUS
為Running
,表明opentelemetry-operator正常運行。
步驟二:建立OpenTelemetry Collector
使用以下內容,建立collector.yaml檔案。
請將YAML中的
${ENDPOINT}
替換為gRPC協議的VPC網路存取點,${TOKEN}
替換為鑒權Token。關於如何擷取阿里雲可觀測鏈路OpenTelemetry版的存取點和鑒權Token,請參見接入和鑒權說明。在ACK叢集對應的KubeConfig環境下,執行以下命令,將collector部署到叢集。
kubectl apply -f collector.yaml
執行以下命令,檢查collector是否正常啟動。
kubectl get pod -n opentelemetry-operator-system
預期輸出:
NAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 3m default-collector-5cbb4497f4-2hjqv 1/1 Running 0 30s
預期輸出表明collector正常啟動。
執行以下命令,檢查服務是否建立。
kubectl get svc -n opentelemetry-operator-system
預期輸出:
opentelemetry-operator ClusterIP 172.16.138.165 <none> 8443/TCP,8080/TCP 3m opentelemetry-operator-webhook ClusterIP 172.16.127.0 <none> 443/TCP 3m default-collector ClusterIP 172.16.145.93 <none> 4317/TCP 30s default-collector-headless ClusterIP None <none> 4317/TCP 30s default-collector-monitoring ClusterIP 172.16.136.5 <none> 8888/TCP 30s
預期輸出表明服務已建立成功。
步驟三:通過ASM控制台啟用鏈路追蹤
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在可觀測配置頁面的鏈路追蹤設定地區,將採樣百分比設定為100,然後單擊提交。
在左側導覽列,選擇
,在OpenTelemetry服務地址/網域名稱輸入default-collector.opentelemetry-operator-system.svc.cluster.local,在OpenTelemetry服務連接埠輸入4317,然後單擊將服務網格鏈路追蹤資料擷取到OpenTelemetry。
步驟四:部署測試應用
部署bookinfo和sleep應用。具體操作,請參見在ASM執行個體關聯的叢集中部署應用。
步驟五:訪問應用並查看上報的追蹤資料
執行以下命令,訪問productpage應用。
kubectl exec -it deploy/sleep -c sleep -- curl productpage:9080/productpage?u=normal
訪問成功後,查看OpenTelemetry Collector日誌,查看debug exporter列印的輸出。
2023-11-20T08:44:27.531Z info TracesExporter {"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 1, "spans": 3}
通過ARMS控制台查看鏈路追蹤資料。
- 登入ARMS控制台。
在左側導覽列,單擊
,然後在頁面左上方選擇目標地區。在應用程式名稱地區,選中發起請求的sleep應用,右側列表顯示調用sleep應用的追蹤資料。
通過sleep應用程式容器發起的訪問,被ASM視作調用sleep應用Sidecar的Egress服務。
在調用列表右側的操作列,單擊目標調用對應的詳情,查看完整調用鏈及延遲資訊。