Standards ouverts Ruby

Standards ouverts Ruby

OpenTracing

Pour en savoir plus sur la configuration de Datadog avec OpenTracing, consultez la section Démarrage rapide pour OpenTracing de la documentation dédiée à Ruby.

Configuration des paramètres du traceur Datadog

Le traceur Datadog sous-jacent peut être configuré en passant des options (qui correspondent à Datadog::Tracer) lors de la configuration du traceur global :

# Où `options` correspond à un hash d'options spécifiées à Datadog::Tracer
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new(options)

Il peut également être configuré en utilisant Datadog.configure, tel que décrit dans la section Paramètres du traceur Ruby.

Activation et configuration des intégrations

Par défaut, la configuration d’OpenTracing avec Datadog n’active aucune instrumentation supplémentaire assurée par Datadog. Vous ne recevrez que les spans et les traces provenant de l’instrumentation OpenTracing intégrée à votre application.

Cependant, des instrumentations supplémentaires fournies par Datadog peuvent être activées aux côtés d’OpenTracing à l’aide de Datadog.configure, afin d’optimiser encore plus votre tracing. Pour ce faire, consultez la section Instrumentation d’intégration Ruby pour obtenir plus de détails.

Formats de sérialisation pris en charge

TypePrise en chargeInformations supplémentaires
OpenTracing::FORMAT_TEXT_MAPOui
OpenTracing::FORMAT_RACKOuiEn raison de la perte de résolution liée au format Rack, veuillez noter que les majuscules dans les noms d’éléments transmis lors de l’aller-retour doivent être remplacées par des minuscules, et le caractère - par le caractère _. Datadog recommande d’éviter l’utilisation de ces caractères ou de prévoir une étape pour y remédier au niveau du destinataire.
OpenTracing::FORMAT_BINARYNon

OpenTelemetry

La prise en charge d’OpenTelemetry est disponible via le gem opentelemetry-exporters-datadog pour exporter les traces d’OpenTelemetry vers Datadog.

Cette fonctionnalité est actuellement en version bêta. Contactez l'assistance si elle ne fonctionne pas correctement.

Installation

  • Si vous utilisez Bundler, incluez ce qui suit dans votre Gemfile :
gem 'opentelemetry-exporters-datadog'
gem 'opentelemetry-api', '~> 0.5'
gem 'opentelemetry-sdk', '~> 0.5'
  • Vous pouvez également installer les gems directement comme suit :
gem install opentelemetry-api
gem install opentelemetry-sdk
gem install opentelemetry-exporters-datadog

Utilisation

Installez le processeur et l’exportateur Datadog dans votre application et configurez les options. Ensuite, utilisez les interfaces OpenTelemetry pour générer des traces et d’autres informations :

require 'opentelemetry/sdk'
require 'opentelemetry-exporters-datadog'

# Configurer le SDK avec l'exportation personnalisée
OpenTelemetry::SDK.configure do |c|
  c.add_span_processor(
    OpenTelemetry::Exporters::Datadog::DatadogSpanProcessor.new(
      OpenTelemetry::Exporters::Datadog::Exporter.new(
        service_name: 'my_service', agent_url: 'http://localhost:8126'
      )
    )
  )
end

# Pour la propagation des en-têtes de tracing distribué spécifiques à Datadog,
# définir la propagation HTTP sur le propagateur composite
OpenTelemetry::Exporters::Datadog::Propagator.auto_configure

# Pour lancer une trace, obtenez un traceur auprès du fournisseur de traceurs
tracer = OpenTelemetry.tracer_provider.tracer('my_app_or_gem', '0.1.0')

# créer une span
tracer.in_span('foo') do |span|
  # définir un attribut
  span.set_attribute('platform', 'osx')
  # ajouter un événement
  span.add_event(name: 'event in bar')
  # créer un bar en tant qu'enfant de foo
  tracer.in_span('bar') do |child_span|
    # inspecter la span
    pp child_span
  end
end

Options de configuration

Si nécessaire, l’URL de l’Agent Datadog et les valeurs des tags de span peuvent être configurées en fonction de l’emplacement de l’Agent et de votre environnement.

URL de l’Agent Datadog

Par défaut, l’exportateur Datadog pour OpenTelemetry envoie les traces à l’URL http://localhost:8126. Pour les envoyer vers une autre URL, configurez les variables d’environnement suivantes :

  • DD_TRACE_AGENT_URL : le <host>:<port> où l’Agent Datadog écoute les traces. Par exemple, http://agent-host:8126.

Vous pouvez également remplacer ces valeurs au niveau de l’exportateur de traces :

# Configurer le SDK avec l'exportation personnalisée
OpenTelemetry::SDK.configure do |c|
  c.add_span_processor(
    OpenTelemetry::Exporters::Datadog::DatadogSpanProcessor.new(
      OpenTelemetry::Exporters::Datadog::Exporter.new(
        service_name: 'my_service',
        agent_url: 'http://dd-agent:8126',
      )
    )
  )
end

Tagging

Configurez l’application de façon à taguer automatiquement vos traces exportées Datadog en définissant les variables d’environnement suivantes :

  • DD_ENV : l’environnement de votre application (p. ex. production, staging).
  • DD_SERVICE : le nom de service par défaut de votre application (p. ex. billing-api).
  • DD_VERSION : la version de votre application (p. ex. 2.5, 202003181415 ou 1.3-alpha).
  • DD_TAGS : tags personnalisés sous forme de paires de valeurs séparées par des virgules (p. ex. layer:api,team:intake).
  • Si la variable DD_ENV, DD_SERVICE ou DD_VERSION est définie, tout tag env, service ou version correspondant défini dans DD_TAGS sera remplacé.
  • Si les variables DD_ENV, DD_SERVICE et DD_VERSION ne sont pas définies, vous pouvez configurer l’environnement, le service et la version à l’aide des tags correspondants dans DD_TAGS.

Les valeurs de tag peuvent également être remplacées au niveau de l’exportateur de traces. Cela vous permet de définir des valeurs différentes pour chaque application. De cette façon, il est possible de recevoir des données à partir de plusieurs applications issues d’environnements différents sur un même host :

# Configurer le SDK avec l'exportation personnalisée
OpenTelemetry::SDK.configure do |c|
  c.add_span_processor(
    OpenTelemetry::Exporters::Datadog::DatadogSpanProcessor.new(
      OpenTelemetry::Exporters::Datadog::Exporter.new(
        service_name: 'my_service',
        agent_url: 'http://localhost:8126',
        env: 'prod',
        version: '1.5-alpha',
        tags: 'team:ops,region:west'
      )
    )
  )
end

Les tags qui sont définis directement sur des spans spécifiques remplacement les tags définis au niveau de l’application en cas de conflit.

OpenTelemetry liens

  • Consultez rubygems ou github pour en savoir plus sur l’utilisation de l’exportateur Datadog pour OpenTelemetry dans une application Ruby.