Métriques basées sur DDSketch dans l'APM

Métriques basées sur DDSketch dans l'APM

Datadog recueille automatiquement des métriques de trace pour vos services et ressources. Elles sont conservées pendant une durée de 15 mois. Les centiles de latence sont disponibles sous la forme de séries temporelles individuelles, mais peuvent également être représentées à l’aide d’une métrique de distribution Datadog. Au lieu de créer une métrique par centile, ainsi que des métriques distinctes pour les services, ressources ou deuxièmes tags primaires, Datadog propose une seule métrique simple à utiliser :

  • trace.<NOM_SPAN> :
    • Prérequis : cette métrique est disponible pour tous les services APM.
    • Description : cette métrique représente les distributions de latence pour l’ensemble des services, ressources et versions ainsi que tous les environnements et deuxièmes tags primaires.
    • Type de métrique : DISTRIBUTION
    • Tags : env, service, version, resource et le deuxième tag primaire.

Les pages APM Service et Resource exploitent automatiquement ce type de métrique pour générer des dashboards et monitors.

À quoi sert cette métrique ?

  • Les métriques de distribution proposent de nouvelles fonctions. Vous pouvez notamment calculer précisément des centiles sur des intervalles (au lieu d’utiliser la fonction de cumul). À terme, elles offrent la possibilité d’améliorer les visualisations et d’intégrer de nouvelles fonctionnalités.

Comment afficher l’historique complet de cette nouvelle métrique ?

  • Datadog intègre la requête existante associée à la nouvelle métrique à une requête équivalente basée sur des métriques de latence durables. Ainsi, vous n’avez pas besoin de créer plusieurs requêtes.

Les valeurs liées à la latence ont changé. Pourquoi ?

  • Les métriques de distribution Datadog tirent profit de la technologie DDSketch. Au lieu de se baser sur des erreurs de rang, les garanties portent sur des erreurs relatives. Ainsi, toutes les valeurs estimées des centiles sont désormais plus proches de la valeur réelle.
  • Ainsi, il est possible que vous constatiez une réduction des valeurs du 99e centile, qui est le plus concerné par ce changement. Les nouvelles valeurs sont désormais plus proches de la valeur réelle du 99e centile.
  • Il convient de noter que les calculs de métriques d’APM ne sont pas identiques aux calculs effectués dans le code pour les métriques custom de distribution Datadog. En effet, le calcul s’effectue en backend, ce qui peut entraîner des écarts.

Ces nouvelles métriques sont-elles disponibles pour tous ?

  • Ces nouvelles métriques peuvent être utilisées par les clients américains, et seront prochainement disponibles pour les clients européens.
  • Datadog déploie actuellement ces nouveautés à un nombre croissant de clients. Leurs pages APM Service et Resource tirent désormais profit des métriques de distribution.
  • Nous avons automatiquement remplacé toutes les requêtes manuelles des dashboards et monitors par les nouvelles métriques. Les anciennes métriques sont toutefois conservées pour les vues historiques.

J’utilise Terraform. Comment ce changement va-t-il m’affecter ?

  • Les métriques existantes sont toujours valides, et vos définitions Terraform restent en place et fonctionnelles.
  • Pour profiter de la précision améliorée offerte par les nouvelles métriques basées sur DDSketch, modifiez vos définitions Terraform comme indiqué dans les examples suivants.

Centiles avant :

avg:trace.http.request.duration.by.resource_service.99p{service:foo, resource:abcdef1234}
avg:trace.sample_span.duration.by.datacenter_resource_service.75p{datacenter:production, service:bar, resource:ghijk5678}

Centiles après :

p99:trace.http.request{service:foo, resource:abcdef1234}
p75:trace.sample_span{datacenter:production, service:bar, resource:ghijk5678}

p100 (100e centile) avant :

avg:trace.http.request.duration.by.resource_service.100p{service:foo, resource:abcdef1234}
avg:trace.sample_span.duration.by.datacenter_resource_service.100p{datacenter:production, service:bar, resource:ghijk5678}

p100 (100e centile) après :

max:trace.http.request{service:foo, resource:abcdef1234}
max:trace.sample_span{datacenter:production, service:bar, resource:ghijk5678}