將鏈路追蹤數(shù)據(jù)采集到阿里云可觀測鏈路OpenTelemetry版
阿里云服務網(wǎng)格ASM支持將指標數(shù)據(jù)上報到阿里云可觀測鏈路OpenTelemetry版。您可以通過可觀測鏈路OpenTelemetry版控制臺查看調用信息和基于調用信息生成的拓撲圖等。本文介紹如何將鏈路追蹤數(shù)據(jù)采集到阿里云可觀測鏈路OpenTelemetry版。
前提條件
已創(chuàng)建ASM實例。具體操作,請參見創(chuàng)建ASM實例。
已添加ACK集群到ASM實例。具體操作,請參見添加集群到ASM實例和升級ASM實例。
阿里云賬號已開通阿里云可觀測鏈路OpenTelemetry版。關于如何計費,請參見計費規(guī)則。
操作步驟
請您按照ASM實例版本選擇對應的頁簽進行操作。
ASM實例版本為1.17.2.35以下
登錄ASM控制臺,在左側導航欄,選擇 。
在網(wǎng)格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在基本信息頁面,單擊功能設置,在功能設置更新面板,選中啟用鏈路追蹤,設置采樣百分比,采樣方式選擇阿里云可觀測鏈路OpenTelemetry版,然后單擊確定。
在左側導航欄,選擇
,跳轉至可觀測鏈路OpenTelemetry版控制臺查看鏈路追蹤信息。關于鏈路追蹤的更多信息,請參見什么是可觀測鏈路OpenTelemetry版。
若您不再需要此功能,可以在功能設置更新面板取消選中啟用鏈路追蹤,然后單擊確定。
ASM實例版本為1.17.2.35及以上,1.18.0.124以下
登錄ASM控制臺,在左側導航欄,選擇 。
在網(wǎng)格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在鏈路追蹤頁面,單擊將服務網(wǎng)格鏈路追蹤數(shù)據(jù)采集到阿里云可觀測鏈路OpenTelemetry版,然后在確認對話框,單擊確定。
單擊打開阿里云可觀測鏈路OpenTelemetry版控制臺,查看鏈路追蹤信息。
關于鏈路追蹤的更多信息,請參見什么是可觀測鏈路OpenTelemetry版。
若您不再需要此功能,可以在鏈路追蹤頁面,單擊關閉采集,然后在確認對話框,單擊確定。
ASM實例版本為1.18.0.124及以上
步驟一:部署OpenTelemetry Operator
在ACK集群對應的KubeConfig環(huán)境,執(zhí)行以下命令,創(chuàng)建opentelemetry-operator-system命名空間。
kubectl create namespace opentelemetry-operator-system
執(zhí)行以下命令,使用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
執(zhí)行以下命令,檢查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正常運行。
步驟二:創(chuàng)建OpenTelemetry Collector
使用以下內(nèi)容,創(chuàng)建collector.yaml文件。
請將YAML中的
${ENDPOINT}
替換為gRPC協(xié)議的VPC網(wǎng)絡接入點,${TOKEN}
替換為鑒權Token。關于如何獲取阿里云可觀測鏈路OpenTelemetry版的接入點和鑒權Token,請參見接入和鑒權說明。apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: labels: app.kubernetes.io/managed-by: opentelemetry-operator name: default namespace: opentelemetry-operator-system annotations: sidecar.istio.io/inject: "false" spec: config: | extensions: zpages: endpoint: 0.0.0.0:55679 receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 exporters: debug: verbosity: detailed otlp: endpoint: ${ENDPOINT} tls: insecure: true headers: Authentication: ${TOKEN} service: extensions: [zpages] pipelines: traces: receivers: [otlp] processors: [] exporters: [otlp, debug] ingress: route: {} managementState: managed mode: deployment observability: metrics: {} podDisruptionBudget: maxUnavailable: 1 replicas: 1 resources: {} targetAllocator: prometheusCR: scrapeInterval: 30s resources: {} upgradeStrategy: automatic
在ACK集群對應的KubeConfig環(huán)境下,執(zhí)行以下命令,將collector部署到集群。
kubectl apply -f collector.yaml
執(zhí)行以下命令,檢查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正常啟動。
執(zhí)行以下命令,檢查服務是否創(chuàng)建。
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
預期輸出表明服務已創(chuàng)建成功。
步驟三:通過ASM控制臺啟用鏈路追蹤
登錄ASM控制臺,在左側導航欄,選擇 。
在網(wǎng)格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在可觀測配置頁面的鏈路追蹤設置區(qū)域,將采樣百分比設置為100,然后單擊提交。
在左側導航欄,選擇
,在OpenTelemetry服務地址/域名輸入default-collector.opentelemetry-operator-system.svc.cluster.local,在OpenTelemetry服務端口輸入4317,然后單擊將服務網(wǎng)格鏈路追蹤數(shù)據(jù)采集到OpenTelemetry。
步驟四:部署測試應用
部署bookinfo和sleep應用。具體操作,請參見在ASM實例關聯(lián)的集群中部署應用。
apiVersion: v1 kind: ServiceAccount metadata: name: sleep --- apiVersion: v1 kind: Service metadata: name: sleep labels: app: sleep service: sleep spec: ports: - port: 80 name: http selector: app: sleep --- apiVersion: apps/v1 kind: Deployment metadata: name: sleep spec: replicas: 1 selector: matchLabels: app: sleep template: metadata: labels: app: sleep spec: terminationGracePeriodSeconds: 0 serviceAccountName: sleep containers: - name: sleep image: registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2 command: ["/bin/sleep", "infinity"] imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /etc/sleep/tls name: secret-volume volumes: - name: secret-volume secret: secretName: sleep-secret optional: true ---
步驟五:訪問應用并查看上報的追蹤數(shù)據(jù)
執(zhí)行以下命令,訪問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控制臺查看鏈路追蹤數(shù)據(jù)。
- 登錄ARMS控制臺。
在左側導航欄,單擊
,然后在頁面左上角選擇目標地域。在應用名稱區(qū)域,選中發(fā)起請求的sleep應用,右側列表顯示調用sleep應用的追蹤數(shù)據(jù)。
通過sleep應用容器發(fā)起的訪問,被ASM視作調用sleep應用Sidecar的Egress服務。
在調用列表右側的操作列,單擊目標調用對應的詳情,查看完整調用鏈及延遲信息。