本文介绍通过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
日志服务的服务入口,例如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。
建议您使用只具备日志服务Project写入权限的RAM用户的AccessKey(包括AccessKey ID和AccessKey Secret)。授予RAM用户向指定Project写入数据权限的具体操作,请参见授权。如何获取AccessKey的具体操作,请参见访问密钥。
access_key_secret
阿里云访问密钥AccessKey Secret。
建议您使用只具备日志服务Project写入权限的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数据详情。