本文介紹通過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 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
其中trace_instance_id為Trace執行個體ID。更多資訊,請參見建立Trace執行個體。
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
步驟二:配置Ingress OpenTracing
此處以阿里雲Kubernetes為例。
在叢集列表頁面中,單擊目的地組群。
在左側導覽列中,選擇 。
在配置項頁面的頂部,選擇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資料詳情。