Overview

Datadog tracing libraries provide an implementation of the OpenTelemetry API for instrumenting your code. This means you can maintain vendor-neutral instrumentation of all your services, while still taking advantage of Datadog’s native implementation, features, and products. You can configure it to generate Datadog-style spans and traces to be processed by the Datadog tracing library for your language, and send those to Datadog.

By instrumenting your code with OpenTelemetry API:

  • Your code remains free of vendor-specific API calls.
  • Your code does not depend on Datadog tracing libraries at compile time (only runtime).
  • Your code does not use the deprecated OpenTracing API.

Replace the OpenTelemetry SDK with the Datadog tracing library in the instrumented application, and the traces produced by your running code can be processed, analyzed, and monitored alongside Datadog traces and in Datadog proprietary products.

For more information, read Interoperability of OpenTelemetry API and Datadog instrumented traces.

The Datadog tracing library, when configured as described here, accepts the spans and traces generated by OpenTelemetry-instrumented code, processes the telemetry, and sends it to Datadog. You can use this approach, for example, if your code has already been instrumented with the OpenTelemetry API, or if you want to instrument using the OpenTelemetry API, and you want to gain the benefits of using the Datadog tracing libraries without changing your code.

If you’re looking for a way to instrument your code with OpenTelemetry and then send span data to Datadog without going through the Datadog tracing library, see OpenTelemetry in Datadog.

Requisitos y limitaciones

  • Biblioteca de rastreo de Datadog Ruby dd-trace-rb versión 1.9.0 o posterior.
  • Compatibilidad con la versión del gem 1.1.0 o posterior.

Las siguientes funciones de OpenTelemetry implementadas en la biblioteca de Datadog como se indica:

FunciónNotas de compatibilidad
Propagación del contexto de OpenTelemetryLos formatos de encabezado de Datadog y W3C Trace Context están activados por defecto.
Procesadores de tramoNo compatible
Exportadores de tramoNo compatible
OpenTelemetry.loggerOpenTelemetry.logger se establece en el mismo objeto que Datadog.logger. Configura a través del registro personalizado.
Generadores de ID de traza/tramoLa generación de ID se realiza mediante la biblioteca de rastreo, con soporte para IDs de traza de 128-bit.

Configuración de OpenTelemetry para utilizar la biblioteca de rastreo de Datadog

  1. Añade la instrumentación manual de OpenTelemetry deseada a tu código Ruby siguiendo la documentación de la Instrumentación manual de OpenTelemetry Ruby. Importante: Cuando esas instrucciones indiquen que tu código debe llamar al SDK de OpenTelemetry, llama a la biblioteca de rastreo de Datadog en su lugar.

  2. Añade el gem datadog a tu Gemfile:

    source 'https://rubygems.org'
    gem 'datadog' # For dd-trace-rb v1.x, use the `ddtrace` gem.
    
  3. Instala el gem ejecutando bundle install.

  4. Añade las siguientes líneas a tu archivo de configuración de OpenTelemetry:

    require 'opentelemetry/sdk'
    require 'datadog/opentelemetry'
    
  5. Añade un bloque de configuración a tu aplicación donde puedas activar integraciones y cambiar la configuración del rastreador. Sin configuración adicional aquí, solo el código que has instrumentado con OpenTelemetry es rastreado:

    Datadog.configure do |c|
      ...
    end
    

    Con este bloque puedes:

Datadog combina estos tramos de OpenTelemetry con otros tramos de Datadog APM en una traza única de tu aplicación. También es compatible con la instrumentación de la integración y la instrumentación automática de OpenTelemetry.

Lectura adicional