使用OpenTelemetry SDK接入Trace數據時,可以通過直接發送或通過OpenTelemetry Collector轉發兩種方式上報數據到可觀測鏈路 OpenTelemetry 版服務端。

前提條件

在控制臺獲取鑒權Token,具體操作,請參見獲取鑒權Token

直接上報

如果您的應用使用了OpenTelemetry SDK,可以通過OpenTelemetry gRPC協議直接向可觀測鏈路 OpenTelemetry 版服務端發送數據,您只需要配置接入點信息以及鑒權信息。

  • 接入點信息:將前提條件中獲取的接入點記為<endpoint>。
  • 鑒權Token:將前提條件中的Token添加為gRPCHeader。

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 SDKOpenTelemetry 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