本文介绍如何在Kubernetes集群中自动安装OpenTelemetry探针,实现Trace数据上传到日志服务。
操作步骤
登录Kubernetes集群。
执行如下命令,安装cert-manager。
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
执行如下命令,安装OpenTelemetry Operator。
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
opentelemetry-operator.yaml配置文件中设置的是ghcr.io镜像地址。在中国境内访问时,会出现访问速度慢或报错问题。您可以修改opentelemetry-operator.yaml配置文件中的镜像地址,实现镜像加速。例如,使用日志服务提供的加速镜像,如下所示:
将镜像地址ghcr.io替换为otel-image-mirror-registry.cn-beijing.cr.aliyuncs.com。
说明目前镜像加速地址仅支持北京(otel-image-mirror-registry.cn-beijing.cr.aliyuncs.com)和杭州(otel-image-mirror-registry.cn-hangzhou.cr.aliyuncs.com)。
执行如下命令,安装OpenTelemetry Collector。
kubectl apply -f - <<EOF apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel spec: image: otel/opentelemetry-collector-contrib:latest config: | receivers: otlp: protocols: grpc: http: 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] exporters: [alibabacloud_logservice/traces] logs: receivers: [otlp] exporters: [alibabacloud_logservice/logs] metrics: receivers: [otlp] exporters: [alibabacloud_logservice/metrics] EOF
命令中的重要参数说明如下表所示,请根据实际情况修改。
参数
说明
endpoint
日志服务的服务入口,例如cn-hangzhou.log.aliyuncs.com。更多信息,请参见服务入口。
project
设置为您在创建Trace实例时所选择的Project。更多信息,请参见创建Trace实例。
logstore
创建Trace实例后,日志服务自动在您所选择的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。更多信息,请参见访问密钥。
access_key_secret
阿里云访问密钥AccessKey Secret。更多信息,请参见访问密钥。
执行如下命令,安装OpenTelemetry Auto-Instrumentation。
kubectl apply -f - <<EOF apiVersion: opentelemetry.io/v1alpha1 kind: Instrumentation metadata: name: my-java-instrumentation spec: exporter: endpoint: http://otel-collector:4317 propagators: - tracecontext - baggage - b3 java: image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:latest nodejs: image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:latest python: image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:latest env: - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://otel-collector:4318 dotnet: image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:latest env: - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://otel-collector:4318 apacheHttpd: image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-apache-httpd:latest EOF
针对不同开发语言的应用(java、nodejs、python、dotnet等) ,请根据实际部署的情况,配置对应语言的Auto-Instrumentation。
将ghcr镜像地址替换为日志服务提供的镜像地址,在中国境内访问时,会出现访问速度慢或报错问题,例如将ghcr.io替换为otel-image-mirror-registry.cn-beijing.cr.aliyuncs.com,可实现镜像加速。
说明目前镜像加速地址仅支持北京(otel-image-mirror-registry.cn-beijing.cr.aliyuncs.com)和杭州(otel-image-mirror-registry.cn-hangzhou.cr.aliyuncs.com)。
在配置文件中添加自动注入探针配置。
根据实际情况,在具体应用的配置文件中添加脚本。目前只支持Python、Node.js、Java和dotNET应用。
重要my-java-instrumentation
是安装Auto-Instrumentation时,设置的Instrumentation名称,即name参数的值,请根据实际值替换。Java
instrumentation.opentelemetry.io/inject-java: "my-java-instrumentation"
Python
instrumentation.opentelemetry.io/inject-python: "my-java-instrumentation"
Node.js
instrumentation.opentelemetry.io/inject-nodejs: "my-java-instrumentation"
dotNET
instrumentation.opentelemetry.io/inject-dotnet: "my-java-instrumentation"