本文介绍通过OpenTelemetry将Kubernetes Ingress链路数据上传到Trace服务的操作步骤。

前提条件

已创建Trace实例。更多信息,请参见创建Trace实例

步骤一:安装OpenTelemetry Collector

  1. 登录您的Kubernetes集群。
  2. 安装cert-manager。
    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.6.1/cert-manager.yaml
  3. 部署OpenTelemetry Operator。
    1. 下载opentelemetry-operator.yaml文件。
      wget https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
    2. 打开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,如下图所示。采集Ingress链路数据
    3. 执行如下命令使配置生效。
      kubectl apply -f opentelemetry-operator.yaml
  4. 部署OpenTelemetry Collector。
    1. 创建一个YAML文件。
      vim collector.yaml
    2. 在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。

    3. 使配置生效。

      其中otel-test为业务所在的命名空间。

      kubectl apply -f collector.yaml --namespace=otel-test

步骤二:配置Ingress OpenTracing

此处以阿里云Kubernetes为例。

  1. 登录容器服务控制台
  2. 集群列表页面中,单击目标集群。
  3. 在左侧导航栏中,选择配置管理 > 配置项
  4. 配置项页面的顶部,选择kube-system命名空间,然后在配置项列表中单击nginx-configuration对应的编辑
  5. 编辑面板中,添加如下两个配置项,然后单击确定

    其中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数据详情