本文介紹通過OpenTelemetry將Kubernetes Ingress鏈路資料上傳到Trace服務的操作步驟。
前提條件
已建立Trace執行個體。更多資訊,請參見建立Trace執行個體。步驟一:安裝OpenTelemetry Collector
- 登入您的Kubernetes叢集。
- 安裝cert-manager。
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.6.1/cert-manager.yaml
- 部署OpenTelemetry Operator。
- 下載opentelemetry-operator.yaml檔案。
wget https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
- 開啟opentelemetry-operator.yaml檔案,並替換其中的鏡像資訊。將opentelemetry-operator.yaml檔案中
ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator
替換為sls-registry.cn-beijing.cr.aliyuncs.com/opentelemetry-operator/opentelemetry-operator
,如下圖所示。 - 執行如下命令使配置生效。
kubectl apply -f opentelemetry-operator.yaml
- 下載opentelemetry-operator.yaml檔案。
- 部署OpenTelemetry Collector。
- 建立一個YAML檔案。
vim collector.yaml
- 在YAML檔案輸入如下指令碼,並根據實際情況設定其中的參數。
apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel spec: image: otel/opentelemetry-collector-contrib:latest config: | receivers: otlp: protocols: grpc: http: jaeger: protocols: grpc: thrift_http: thrift_compact: thrift_binary: zipkin: exporters: alibabacloud_logservice/logs: endpoint: "cn-hangzhou.log.aliyuncs.com" project: "demo-project" logstore: "store-logs" access_key_id: "access-key-id" access_key_secret: "access-key-secret" alibabacloud_logservice/metrics: endpoint: "cn-hangzhou.log.aliyuncs.com" project: "demo-project" logstore: "store-traces-metrics" access_key_id: "access-key-id" access_key_secret: "access-key-secret" alibabacloud_logservice/traces: endpoint: "cn-hangzhou.log.aliyuncs.com" project: "demo-project" logstore: "store-traces" access_key_id: "access-key-id" access_key_secret: "access-key-secret" service: pipelines: traces: receivers: [otlp, jaeger, zipkin] exporters: [alibabacloud_logservice/traces] metrics: receivers: [otlp] exporters: [alibabacloud_logservice/metrics]
參數 說明 endpoint Log Service的服務入口,例如cn-hangzhou.log.aliyuncs.com。更多資訊,請參見服務入口。 project 設定為您在建立Trace執行個體時所選擇的Project。更多資訊,請參見建立Trace執行個體。 logstore 建立Trace執行個體後,Log Service自動在您所選擇的Project下產生3個Logstore,分別用於儲存Logs、Metrics和Traces資料。請根據實際情況替換Logstore名稱。 - trace_instance_id-logs
- trace_instance_id-traces-metrics
- trace_instance_id-traces
access_key_id 阿里雲存取金鑰AccessKey ID。 建議您使用只具備Log ServiceProject寫入許可權的RAM使用者的AccessKey(包括AccessKey ID和AccessKey Secret)。授予RAM使用者向指定Project寫入資料許可權的具體操作,請參見授權。如何擷取AccessKey的具體操作,請參見存取金鑰。
access_key_secret 阿里雲存取金鑰AccessKey Secret。 建議您使用只具備Log ServiceProject寫入許可權的RAM使用者的AccessKey。
- 使配置生效。
其中
otel-test
為業務所在的命名空間。kubectl apply -f collector.yaml --namespace=otel-test
- 建立一個YAML檔案。
步驟二:配置Ingress OpenTracing
此處以阿里雲Kubernetes為例。
- 登入Container Service控制台。
- 在叢集列表頁面中,單擊目的地組群。
- 在左側導覽列中,選擇 。
- 在配置項頁面的頂部,選擇kube-system命名空間,然後在配置項列表中單擊nginx-configuration對應的編輯。
- 在編輯面板中,添加如下兩個配置項,然後單擊確定。
其中
otel-test
為業務所在的命名空間,需與您在步驟4.iii中設定的命名空間一致。zipkin-collector-host: otel-collector.otel-test.svc.cluster.local:9411/api/v1/spans? enable-opentracing: true
完成上述操作後,當您的Kubernetes產生Ingress鏈路資料時,OpenTelemetry就會上傳該資料到Trace服務。您可以在Trace服務中查看資料。具體操作,請參見查看Trace資料詳情。