本文介绍通过OpenTelemetry将Kubernetes Ingress链路数据上传到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 日志服务的服务入口,例如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
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
- 创建一个YAML文件。
步骤二:配置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数据详情。