使用OpenTelemetry SDK接入Trace数据时,可以通过直接发送或通过OpenTelemetry Collector转发两种方式上报数据到可观测链路 OpenTelemetry 版服务端。

前提条件

在控制台获取鉴权Token,具体操作,请参见获取鉴权Token

直接上报

如果您的应用使用了OpenTelemetry SDK,可以通过OpenTelemetry gRPC协议直接向可观测链路 OpenTelemetry 版服务端发送数据,您只需要配置接入点信息以及鉴权信息。

  • 接入点信息:将前提条件中获取的接入点记为<endpoint>。
  • 鉴权Token:将前提条件中的Token添加为gRPC的Header。

以Java语言为例:

SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
                .addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder()
                        .setEndpoint("<endpoint>")
                        .addHeader("Authentication", "<token>")
                        .build()).build())
                .build();
说明
  • <endpoint>替换为前提条件中获取的gRPC接入点信息,例如:http://tracing-analysis-dc-bj.aliyuncs.com:8090
  • <token>替换为前提条件中获取的Token,例如:b590lhguqs@3a7xxxxxxx9b_b590lhguqs@53dxxxxx8301

通过开源OpenTelemetry Collector转发

如果您的应用使用了OpenTelemetry SDK和OpenTelemetry Collector,将Endpoint配置为本地部署的OpenTelemetry Collector地址后,无需配置鉴权信息,只需在OpenTelemetry Collector配置OTLP Exporter(包含Endpoint以及鉴权信息)向可观测链路 OpenTelemetry 版服务端上报数据。

安装OpenTelemetry Collector

OpenTelemetry Collector的安装方式有两种,一种是直接下载二进制格式的OpenTelemetry Collector安装包并运行,另一种是用Docker安装并运行OpenTelemetry的镜像。

  • 二进制格式的下载链接:OpenTelemetry Collector
  • Docker方式的安装命令如下:
    docker pull otel/opentelemetry-collector:0.66.0

配置OpenTelemetry Collector

OpenTelemetry Collector有两种转发数据的方式,分别是使用gRPC的方式进行转发和使用HTTP的方式进行转发,两种上报方式对应着不同的配置文件,下面分别进行介绍。

  • 创建gRPC方式转发的配置文件
    参考下面示例创建gRPC方式进行转发的otel-config.yaml配置文件,并对配置文件中的内容进行修改。
    说明 修改配置文件中的exports部分:
    • <endpoint>替换为前提条件中获取的gRPC接入点信息,例如:http://tracing-analysis-dc-bj.aliyuncs.com:8090
    • <token>替换为前提条件中获取的Token,例如:b590lhguqs@3a7xxxxxxx9b_b590lhguqs@53dxxxxx8301
    extensions:
      memory_ballast:
        size_mib: 512
      zpages:
        endpoint: 0.0.0.0:55679
    
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    
    processors:
      batch:
      memory_limiter:
        # 75% of maximum memory up to 4G
        limit_mib: 1536
        # 25% of limit up to 2G
        spike_limit_mib: 512
        check_interval: 5s
    
    exporters:
      logging:
        logLevel: debug
      otlp:
        endpoint: <endpoint>:8090
        tls:
          insecure: true
        headers:
          Authentication: <token>
    
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [logging, otlp]
        metrics:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [logging]
    
      extensions: [memory_ballast, zpages]
  • 创建HTTP方式转发的配置文件
    参考下面示例创建HTTP方式进行转发的otel-config.yaml配置文件,并对配置文件中的内容进行修改。
    说明<traces_endpoint>替换为前提条件中获取的HTTP接入点信息,例如:http://tracing-analysis-dc-hz.aliyuncs.com/adapt_XXXXX/api/otlp/traces
    extensions:
      memory_ballast:
        size_mib: 512
      zpages:
        endpoint: 0.0.0.0:55679
    
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    
    processors:
      batch:
      memory_limiter:
        # 75% of maximum memory up to 4G
        limit_mib: 1536
        # 25% of limit up to 2G
        spike_limit_mib: 512
        check_interval: 5s
    
    exporters:
      logging:
        logLevel: debug
      otlphttp:
        traces_endpoint: http://tracing-analysis-dc-hz.aliyuncs.com/adapt_XXXXX/api/otlp/traces
        tls:
          insecure: true
        timeout: 120s
    
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [logging, otlphttp]
        metrics:
          receivers: [otlp]
          processors: [memory_limiter, batch]
          exporters: [logging]
    
      extensions: [memory_ballast, zpages]

启动OpenTelemetry Collector

  • 如果下载的是二进制格式的OpenTelemetry Collector,执行以下命令启动OpenTelemetry Collector。
    ./ocb_0.44.0_linux_amd64 --config="./otel-config.yaml"
  • 如果使用Docker安装OpenTelemetry Collector,执行以下命令启动OpenTelemetry Collector。
    docker run -v $(pwd)/otel-config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector:0.66.0