App Analytics

Cette page décrit des fonctionnalités obsolètes, dont la configuration repose sur l'ancienne solution App Analytics, qui peuvent s'avérer utiles pour diagnostiquer des problèmes ou modifier d'anciennes configurations. Pour contrôler tous les aspects de vos traces, utilisez plutôt les contrôles d'ingestion et filtres de rétention.

Adopter les nouvelles options de configuration

Accédez à la page de contrôle de l’ingestion pour visualiser les services dont la configuration est obsolète. Ils sont identifiés par le statut Legacy Setup.

Pour adopter les nouvelles options de configuration, supprimez toutes les options de configuration App Analytics des services avec le statut Legacy Setup. Implémentez ensuite l’Agent Datadog et les mécanismes d’échantillonnage des bibliothèques de tracing pour envoyer des traces.

Configuration d’App Analytics

Les options de configuration App Analytics sont accessibles depuis les bibliothèques de tracing et l’Agent Datadog. Les spans d’analyse de vos services dans les bibliothèques sont générées automatiquement ou manuellement.

Dans les bibliothèques de tracing

Configuration automatique

La fonction App Analytics est disponible à partir de la version 0.25.0 du client de tracing Java. Elle peut être activée de façon globale pour toutes les intégrations de serveur Web avec un paramètre de configuration unique dans le client de tracing :

  • Propriété système : -Ddd.trace.analytics.enabled=true
  • Variable d’environnement : DD_TRACE_ANALYTICS_ENABLED=true

La fonction App Analytics est disponible à partir de la version 0.19.0 du client de tracing Python. Elle peut être activée de façon globale pour toutes les intégrations Web avec un paramètre de configuration unique dans le client de tracing :

  • Configuration du traceur : ddtrace.config.analytics_enabled = True
  • Variable d’environnement : DD_TRACE_ANALYTICS_ENABLED=true

La fonction App Analytics est disponible à partir de la version 0.19.0 du client de tracing Ruby. Elle peut être activée pour toutes les intégrations Web avec un flag global.

Pour ce faire, définissez DD_TRACE_ANALYTICS_ENABLED=true dans votre environnement ou configurez ce paramètre :

Datadog.configure { |c| c.tracing.analytics.enabled = true }
  • true active les analyses pour tous les frameworks Web.
  • false ou nil désactive les analyses, sauf pour les intégrations qui l’activent automatiquement. (Par défaut)

La fonction App Analytics est disponible à partir de la version 1.11.0 du client de tracing Go. Elle peut être activée de façon globale pour toutes les intégrations Web avec :

  • l’option de démarrage du traceur WithAnalytics. Exemple :

    tracer.Start(tracer.WithAnalytics(true))
    
  • la variable d’environnement DD_TRACE_ANALYTICS_ENABLED=true, à partir de la version 1.26.0.

La fonction App Analytics est disponible à partir de la version 0.10.0 du client de tracing Node.js. Elle peut être activée de façon globale pour toutes les intégrations Web avec un paramètre de configuration unique dans le client de tracing :

tracer.init({
  analytics: true
})

Vous pouvez également utiliser le paramètre de configuration suivant :

  • Variable d’environnement : DD_TRACE_ANALYTICS_ENABLED=true

La fonction App Analytics est disponible à partir de la version 1.1.0 du client de tracing .NET. Elle peut être activée de façon globale pour toutes les intégrations Web avec un paramètre de configuration unique dans le client de tracing :

  • Variable d’environnement ou AppSetting : DD_TRACE_ANALYTICS_ENABLED=true

Ce paramètre peut également être défini dans le code :

Tracer.Instance.Settings.AnalyticsEnabled = true;

La fonction App Analytics est disponible à partir de la version 0.17.0 du client de tracing PHP. Elle peut être activée de façon globale pour toutes les intégrations Web avec un paramètre de configuration unique dans le client de tracing :

  • Variable d’environnement : DD_TRACE_ANALYTICS_ENABLED=true

La fonction App Analytics est disponible à partir de la version 1.0.0 du client de tracing C++. Elle peut être activée de façon globale pour toutes les spans d’entrée de service en définissant la variable d’environnement DD_TRACE_ANALYTICS_ENABLED sur true. Remarque : ce paramètre peut également être défini directement dans le code.

datadog::opentracing::TracerOptions tracer_options;
  tracer_options.agent_host = "dd-agent";
  tracer_options.service = "<NOM_SERVICE>";
  tracer_options.analytics_rate = 1.0;
  auto tracer = datadog::opentracing::makeTracer(tracer_options);

Pour activer la fonction App Analytics pour Nginx :

  1. Définissez la variable d’environnement DD_TRACE_ANALYTICS_ENABLED sur true.

  2. Ajoutez env DD_TRACE_ANALYTICS_ENABLED; en haut de votre fichier nginx.conf.

Configurer d’autres services (facultatif)

Configuration par intégration

En plus du paramètre global, vous pouvez activer ou désactiver la fonction App Analytics pour des intégrations spécifiques grâce au paramètre suivant :

  • Propriété système : -Ddd.<intégration>.analytics.enabled=true
  • Variable d’environnement : DD_<INTÉGRATION>_ANALYTICS_ENABLED=true

Utilisez ces options en plus de la configuration globale pour les intégrations qui envoient des services custom. Par exemple, si des spans JMS sont envoyées en tant que service custom, vous pouvez définir le code suivant pour activer le tracing de JMS dans la fonction App Analytics :

  • Propriété système : -Ddd.jms.analytics.enabled=true
  • Variable d’environnement : DD_JMS_ANALYTICS_ENABLED=true

Les noms des intégrations sont disponibles sur le tableau des intégrations.

En plus du paramètre global, vous pouvez activer ou désactiver la fonction App Analytics pour des intégrations spécifiques grâce au paramètre suivant :

  • Configuration du traceur : ddtrace.config.<INTÉGRATION>.analytics_enabled = True
  • Variable d’environnement : DD_<INTÉGRATION>_ANALYTICS_ENABLED=true

Utilisez ces options en plus de la configuration globale pour les intégrations qui envoient des services custom. Par exemple, si des spans Boto sont envoyées en tant que service custom, vous pouvez définir le code suivant pour activer le tracing de Boto dans la fonction App Analytics :

  • Configuration du traceur : ddtrace.config.boto.analytics_enabled = True
  • Variable d’environnement : DD_BOTO_ANALYTICS_ENABLED=true

Remarque : l’implémentation du traceur étant propre à chaque intégration, plusieurs intégrations nécessitent une configuration spéciale. Consultez la documentation des bibliothèques sur App Analytics pour en savoir plus.

La fonction App Analytics peut être activée pour des intégrations spécifiques.

Pour ce faire, définissez DD_<INTÉGRATION>_ANALYTICS_ENABLED=true dans votre environnement ou configurez ce paramètre :

Datadog.configure { |c| c.tracing.instrument :integration, analytics_enabled: true }

intégration est le nom de l’intégration. Consultez la liste des intégrations disponibles pour découvrir les options disponibles.

  • true active l’analyse pour cette intégration, quel que soit le paramètre global.
  • false désactive l’analyse pour cette intégration, quel que soit le paramètre global.
  • nil applique le paramètre global pour l’analyse.

En plus du paramètre global, vous pouvez activer ou désactiver la fonction App Analytics pour chaque intégration. Par exemple, pour configurer le paquet net/http de la bibliothèque standard, vous pouvez procéder ainsi :

package main

import (
    httptrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/net/http"
    "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)

func main() {
    tracer.Start()
    defer tracer.Stop()

    mux := httptrace.NewServeMux(httptrace.WithAnalytics(true))
    // ...
}

En plus du paramètre global, vous pouvez activer ou désactiver la fonction App Analytics pour des intégrations spécifiques.

Par exemple, pour activer la fonction App Analytics pour express :

tracer.use('express', {
  analytics: true
})

Les noms des intégrations sont disponibles sur le tableau des intégrations.

En plus du paramètre global, vous pouvez activer ou désactiver la fonction App Analytics pour des intégrations spécifiques.

  • Variable d’environnement ou AppSetting : DD_<INTÉGRATION>_ANALYTICS_ENABLED=true

Ou via le code :

Tracer.Instance.Settings.Integrations["<INTÉGRATION>"].AnalyticsEnabled = true;

Par exemple, pour activer la fonction App Analytics pour ASP.NET MVC :

  • Variable d’environnement ou AppSetting : DD_ASPNETMVC_ANALYTICS_ENABLED=true

Ou via le code :

Tracer.Instance.Settings.Integrations["AspNetMvc"].AnalyticsEnabled = true;

Les noms des intégrations sont disponibles sur le tableau des intégrations. Remarque : sous Linux, les noms des variables d’environnement sont sensibles à la casse.

En plus du paramètre global, vous pouvez activer ou désactiver la fonction App Analytics pour des intégrations spécifiques grâce au paramètre suivant :

  • Variable d’environnement : DD_<INTÉGRATION>_ANALYTICS_ENABLED=true

Utilisez ces options en plus de la configuration globale pour les intégrations qui envoient des services custom. Par exemple, si des spans Symfony sont envoyées en tant que service custom, vous pouvez définir le code suivant pour activer le tracing de Symfony dans la fonction App Analytics :

  • Variable d’environnement : DD_SYMFONY_ANALYTICS_ENABLED=true

Les noms des intégrations sont disponibles sur le tableau des intégrations.

Services de base de données

Par défaut, le tracing de base de données n’est pas pris en charge par la fonction App Analytics. Vous devez activer la collecte manuellement pour chaque intégration. Par exemple :

  • Propriété système : -Ddd.jdbc.analytics.enabled=true
  • Variable d’environnement : DD_JDBC_ANALYTICS_ENABLED=true

Par défaut, le tracing de base de données n’est pas pris en charge par la fonction App Analytics. Vous devez activer la collecte manuellement pour chaque intégration. Par exemple :

  • Configuration du traceur : ddtrace.config.psycopg.analytics_enabled = True
  • Variable d’environnement : DD_PSYCOPG_ANALYTICS_ENABLED=true

Par défaut, le tracing de base de données n’est pas pris en charge par la fonction App Analytics. Vous devez activer la collecte manuellement pour chaque intégration. Par exemple :

Datadog.configure { |c| c.tracing.instrument :mongo, analytics_enabled: true }

Par défaut, le tracing de base de données n’est pas pris en charge par la fonction App Analytics. Vous devez activer la collecte manuellement pour chaque intégration. Par exemple :

// Enregistrer le pilote de base de données avec la fonction Analytics activée.
sqltrace.Register("mysql", &mysql.MySQLDriver{}, sqltrace.WithAnalytics(true))

Par défaut, le tracing de base de données n’est pas pris en charge par la fonction App Analytics. Vous devez activer la collecte manuellement pour chaque intégration. Par exemple :

tracer.use('mysql', {
  analytics: true
})

Par défaut, le tracing de base de données n’est pas pris en charge par la fonction App Analytics. Vous devez activer la collecte manuellement pour chaque intégration. Par exemple, pour activer la fonction App Analytics pour ADO.NET :

  • Variable d’environnement ou AppSetting : DD_AdoNet_ANALYTICS_ENABLED=true

Ou via le code :

Tracer.Instance.Settings.Integrations["AdoNet"].AnalyticsEnabled = true;

Les noms des intégrations sont disponibles sur le tableau des intégrations. Remarque : sous Linux, les noms des variables d’environnement sont sensibles à la casse.

Par défaut, le tracing Datadog n’est pas enregistré par la fonction App Analytics. Vous pouvez activer ou désactiver cette fonction pour des intégrations spécifiques grâce au paramètre suivant :

  • Variable d’environnement : DD_<INTÉGRATION>_ANALYTICS_ENABLED=true

Utilisez cette option en plus de la configuration globale pour les intégrations qui envoient des services custom. Par exemple, pour mysqli :

  • Variable d’environnement : DD_MYSQLI_ANALYTICS_ENABLED=true

Les noms des intégrations sont disponibles sur le tableau des intégrations.

Instrumentation personnalisée

Les applications utilisant une instrumentation personnalisée peuvent activer App Analytics en appliquant le tag ANALYTICS_SAMPLE_RATE à une span :

import datadog.trace.api.DDTags;
import datadog.trace.api.Trace;
import io.opentracing.Tracer;
import io.opentracing.util.GlobalTracer;

class MyClass {
  @Trace
  void myMethod() {
    final Span span = GlobalTracer.get().activeSpan();
    // Span fournie par l'annotation @Trace.
    if (span != null) {
      span.setTag(DDTags.SERVICE, "<NOM_SERVICE>");
      span.setTag(DDTags.ANALYTICS_SAMPLE_RATE, 1.0);
    }
  }
}

Remarque : la fonction App Analytics peut être activée pour dd.trace.methods ou pour les spans des annotations de trace en définissant -Ddd.trace-annotation.analytics.enabled=true.

Les applications utilisant une instrumentation personnalisée peuvent activer App Analytics en appliquant le tag ddtrace.constants.ANALYTICS_SAMPLE_RATE_KEY à une span :

from ddtrace import tracer
from ddtrace.constants import ANALYTICS_SAMPLE_RATE_KEY

@tracer.wrap()
def my_method():
    span = tracer.current_span()
    span.set_tag(ANALYTICS_SAMPLE_RATE_KEY, True)

Les applications dotées d’une instrumentation personnalisée peuvent activer App Analytics en définissant la balise Analytics::TAG_ENABLED sur une span :

Datadog::Tracing.trace('my.task') do |span|
  # Définir le taux d'échantillonnage de l'analyse sur 1.0
  span.set_tag(Datadog::Tracing::Metadata::Ext::Analytics::TAG_ENABLED, true)
end

Pour les instrumentations personnalisées, un tag spécial a été ajouté pour activer la fonction App Analytics sur une span, comme ci-dessous :

span.SetTag(ext.AnalyticsEvent, true)

Ce tag permet de définir la span comme un événement App Analytics.

Les applications utilisant une instrumentation personnalisée peuvent activer App Analytics en appliquant le tag ANALYTICS à une span :

const { ANALYTICS } = require('dd-trace/ext/tags')

span.setTag(ANALYTICS, true)

Les applications utilisant une instrumentation personnalisée peuvent activer App Analytics en appliquant le tag Tags.Analytics à une span :

using Datadog.Trace;

using(var scope = Tracer.Instance.StartActive("web.request"))
{
    // activer l'analyse sur cette span
    scope.span.SetTag(Tags.Analytics, "true");
}

Les applications utilisant une instrumentation personnalisée peuvent activer App Analytics en appliquant le tag ANALYTICS_KEY à une span :

<?php
  // ... la span existante pour laquelle vous souhaitez activer App Analytics
  $span->setTag(Tag::ANALYTICS_KEY, true);
?>

Les applications utilisant une instrumentation personnalisée peuvent activer App Analytics en appliquant le tag analytics_event à une span :

...
#include <datadog/tags.h>
...
auto tracer = ...
auto span = tracer->StartSpan("operation_name");
// Une valeur booléenne true active la fonction App Analytics,
// avec un taux d'échantillonnage de 1.0.
span->SetTag(datadog::tags::analytics_event, true);
// Une double valeur entre 0.0 et 1.0 active la fonction App Analytics
// et définit le taux d'échantillonnage sur la valeur spécifiée.
span->SetTag(datadog::tags::analytics_event, 0.5);

Dans l’Agent Datadog

Cette section décrit des fonctionnalités obsolètes, dont la configuration repose sur l'ancienne solution App Analytics.

Pour configurer un taux de spans à analyser par service, définissez ce qui suit dans le fichier datadog.yaml :

apm_config:
  analyzed_rate_by_service:
    service_A: 1
    service_B: 0.2
    service_C: 0.05

Pour configurer un taux de spans à analyser par service et par nom d’opération, définissez ce qui suit dans le fichier datadog.yaml :

apm_config:
  analyzed_spans:
    service_A|operation_name_X: 1
    service_A|operation_name_Y: 0.25
    service_B|operation_name_Z: 0.01

Dépannage : limite du nombre d’événements par seconde

Si le message d’erreur suivant apparaît dans vos logs de l’Agent, cela signifie que vos applications génèrent plus de 200 événements de trace par seconde, soit la limite autorisée par défaut par l’APM.

Max events per second reached (current=300.00/s, max=200.00/s). Some events are now being dropped (sample rate=0.54). Consider adjusting event sampling rates.

Pour augmenter la limite de débit de l’APM pour l’Agent, configurez l’attribut max_events_per_second dans le fichier de configuration de l’Agent (sous la section apm_config:). Pour les déploiements conteneurisés (tels que Docker ou Kubernetes), utilisez la variable d’environnement DD_APM_MAX_EPS.

Remarque : l’augmentation de la limite de débit de l’APM pourrait entraîner une augmentation des coûts de la fonction App Analytics.