Opérations primaires dans les services

Services APM

Les services APM calculent des métriques de trace portant sur les erreurs, le débit et la latence. Ces données sont calculées en tenant compte des ressources correspondant à un nom de span unique, à savoir l’opération primaire. Ces métriques de service sont utilisées dans l’ensemble du produit, que ce soit dans la page Service par défaut, la liste des services ou encore la Service Map.

Remarque : vous pouvez interroger les métriques de trace en indiquant trace.* espacedenommage.

Opérations primaires

Définition

Le nom de l’opération primaire d’un service détermine sa représentation dans l’interface. Le backend Datadog sélectionne automatiquement le nom d’opération avec le plus haut débit de requêtes afin d’en faire le point d’entrée vers le service.

Imaginons qu’un service web-store dispose de plusieurs endpoints, instrumentés comme des ressources. Celles-ci partagent alors la même opération primaire, car le point d’entrée vers ces ressources est identique. Par exemple, les ressources /user/home et /user/new doivent avoir toutes les deux la même opération primaire, web.request. Voici à quoi ressemble une opération primaire pour un service dans différents langages :

Type de serviceOpération primaire
webservlet.request, flask.request, web.request
dbpostgres.query, db.query
custom-instrumentationtrace.annotation, method.call

Configuration

Lorsque plusieurs opérations primaires sont définies pour un service, c’est l’opération avec le plus haut débit de requêtes qui est automatiquement sélectionnée en tant que point d’entrée vers le service. Un administrateur peut également définir manuellement l’opération primaire :

  1. Accédez à la page des réglages de l’APM.
  2. Sélectionnez l’onglet Primary Operation Name.
  3. Cliquez sur l’icône de modification en regard du service que vous souhaitez définir manuellement.
  4. Cliquez sur l’onglet Set Manually.
  5. Sélectionnez l’opération à définir comme point d’entrée vers le service.
  6. Cliquez sur Enregistrer.
Enregistrement depuis l'APM

Afficher des statistiques sur des noms de span supplémentaires

Pour vérifier que toutes les traces sont correctement envoyées à Datadog en dehors des instrumentations, vous pouvez consulter vos ressources en appliquant un filtre supplémentaire. Pour ce faire, sélectionnez dans un menu déroulant des noms de span supplémentaires considérés comme des opérations secondaires. Veuillez toutefois noter que ces noms de span ne sont pas utilisés pour calculer les statistiques au niveau des services.

Instrumentation manuelle

Lorsque vous rédigez des spans personnalisées, définissez de façon statique le nom de la span afin de veiller à ce que vos ressources soient regroupées en fonction de la même opération primaire (par exemple, web.request). Si le nom de la span est dynamique, définissez la span en tant que ressource (par exemple, /user/profile).

Pour obtenir plus de détails, consultez la section Instrumentation personnalisée pour votre langage.

OpenTracing

Dans Datadog, le nom d’opération OpenTracing correspond à une ressource, tandis que le tag « component » OpenTracing correspond au nom de la span de Datadog. L’exemple suivant vous permet de définir une span avec la ressource « /user/profile » et le nom « http.request » de manière compréhensible pour OpenTracing.

Span span = tracer.buildSpan("http.request").start();

try (Scope scope = tracer.activateSpan(span)) {
    span.setTag("service.name", "service_name");
    span.setTag("resource.name", "/user/profile");
    // code tracé
} finally {
    span.finish();
}

Pour en savoir plus, consultez la section relative à la configuration de Java et d’OpenTracing.

Pour aller plus loin