Types de métriques

Présentation

Chaque métrique envoyée à Datadog doit posséder un type. Le type d’une métrique définit l’affichage des valeurs de la métrique renvoyées, ainsi que les fonctionnalités graphiques associées reposant sur des modificateurs et des fonctions supplémentaires dans Datadog. Le type d’une métrique figure dans le volet latéral des détails de votre métrique sur la page Metrics Summary.

Remarque : si vous modifiez le type de votre métrique dans le volet latéral, il est possible que cela ait une incidence sur le comportement de la métrique dans toutes les visualisations et tous les monitors existants et que les données historiques deviennent incompréhensibles.

Les métriques envoyées peuvent être des types suivants :

Ces différents types de métriques envoyés correspondent à quatre types de métriques stockés dans l’application Web Datadog :

  • COUNT
  • RATE
  • GAUGE
  • DISTRIBUTION

Remarque : si vous envoyez une métrique sans aucun type à Datadog, celle-ci figurera sous le type Not Assigned dans Datadog. Pour remplacer ce type par une autre valeur, vous devez envoyer un type de métrique initial.

Type envoyé et type stocké

Les métriques sont envoyées à Datadog à l’aide des trois ressources suivantes :

La plupart des données transmises à Datadog sont envoyées par l’Agent, que ce soit via un check d’Agent ou via DogStatsD. Pour ces méthodes d’envoi, le type d’une métrique détermine la méthode d’agrégation des différentes valeurs recueillies par l’Agent lors de l’intervalle de transmission. L’Agent combine ces valeurs au sein d’une unique valeur représentative de la métrique pour cet intervalle. Un timestamp est ajouté à la valeur combinée avant de la stocker dans Datadog.

À l’exception des métriques de distribution, les données envoyées directement à l’API Datadog ne sont pas agrégées par Datadog. Les valeurs brutes transmises sont stockées telles quelles.

Lisez la rubrique Types envoyés et types stockés dans Datadog pour découvrir comment les types de métriques envoyés sont associés aux types stockés correspondants.

Types de métriques

Définition

Le type de métrique envoyé COUNT représente le nombre d’événements survenus lors d’un intervalle. Une métrique COUNT peut servir à surveiller le nombre total de connexions vers une base de données ou de requêtes transmises à un endpoint. Ce nombre d’événements peut augmenter ou diminuer au fil du temps : il n’est pas strictement croissant.

Remarque : les métriques COUNT diffèrent des métriques RATE. En effet, ces dernières représentent le nombre d’événements normalisé par seconde pour la période donnée.

Le type de métrique envoyé RATE représente le nombre total d’événements survenus par seconde lors d’un intervalle. Une métrique RATE peut servir à surveiller la répétitivité d’un événement, telle que la fréquence des connexions vers une base de données ou le flux de requêtes transmises à un endpoint.

Remarque : les métriques RATE diffèrent des métriques COUNT. En effet, ces dernières représentent le nombre total d’événements pour la période donnée.

Le type de métrique envoyé GAUGE représente un snapshot des événements survenus durant un intervalle. La valeur de ce snapshot représentatif correspond à la dernière valeur envoyée à l’Agent lors de l’intervalle. Une métrique GAUGE peut servir à mesurer des données sans cesse transmises, telles que l’espace disque disponible ou la mémoire utilisée.

Le type de métrique envoyé HISTOGRAM représente la distribution statistique d’un ensemble de valeurs calculées côté Agent sur un intervalle unique. Le type de métrique HISTOGRAM de Datadog est une extension du type de métrique timing de StatsD. L’Agent agrège les valeurs envoyées durant un intervalle donné et génère différentes métriques représentant l’ensemble de valeurs.

Si vous envoyez X valeurs pour la métrique HISTOGRAM <NOM_MÉTRIQUE> durant un intervalle donné, l’Agent génère par défaut les métriques suivantes :

<NOM_MÉTRIQUE>.avg
Représente la moyenne des X valeurs transmises lors de l’intervalle.
Type stocké dans Datadog : GAUGE
<NOM_MÉTRIQUE>.count
Représente le nombre de valeurs envoyées lors de l’intervalle. Ce nombre X est envoyé par l’Agent en tant que RATE, ce qui signifie que la valeur affichée dans Datadog correspond à X / intervalle.
Type stocké dans Datadog : RATE
<NOM_MÉTRIQUE>.median
Représente la médiane des X valeurs transmises lors de l’intervalle.
Type stocké dans Datadog : GAUGE
<NOM_MÉTRIQUE>.95percentile
Représente le 95 centile des X valeurs transmises lors de l’intervalle.
Type stocké dans Datadog : GAUGE
<NOM_MÉTRIQUE>.max
Représente la valeur maximale des X valeurs transmises lors de l’intervalle.
Type stocké dans Datadog : GAUGE

Remarques :

  • Configurez les agrégations que vous souhaitez envoyer à Datadog à l’aide du paramètre histogram_aggregates dans votre fichier de configuration datadog.yaml. Par défaut, seules les agrégations max, median, avg et count sont envoyées à Datadog. Les agrégations sum et min sont également disponibles.
  • Configurez les agrégations par centile que vous souhaitez envoyer à Datadog à l’aide du paramètre histogram_percentiles dans votre fichier de configuration datadog.yaml. Par défaut, seul le centile 95percentile est envoyé à Datadog.

Le type de métrique envoyé DISTRIBUTION représente la distribution statistique globale d’un ensemble de valeurs calculées lors d’un intervalle unique sur l’intégralité de votre infrastructure distribuée. Une métrique DISTRIBUTION peut servir à instrumenter des objets logiques, tels que des services, indépendamment des hosts sous-jacents.

Contrairement aux métriques HISTOGRAM, qui effectuent l’agrégation au niveau de l’Agent durant un intervalle donné, les métriques DISTRIBUTION envoient l’intégralité des données brutes recueillies lors d’un intervalle à Datadog. Les agrégations se font alors côté serveur. Puisque la structure sous-jacente représente des données brutes et non agrégées, les distributions offrent deux fonctionnalités importantes :

  • Calcul des agrégations par centile
  • Personnalisation du tagging

Si vous envoyez X valeurs pour la métrique DISTRIBUTION <NOM_MÉTRIQUE> durant un intervalle donné, par défaut, vos requêtes peuvent porter sur les agrégations suivantes :

avg:<NOM_MÉTRIQUE>
Représente la moyenne des X valeurs transmises lors de l’intervalle.
Type stocké dans Datadog : GAUGE
count:<NOM_MÉTRIQUE>
Représente le nombre de points envoyés durant l’intervalle. Ce nombre X est ensuite envoyé par l’Agent en tant que COUNT.
Type stocké dans Datadog : COUNT
max:<NOM_MÉTRIQUE>
Représente la valeur maximale des X valeurs transmises lors de l’intervalle.
Type stocké dans Datadog : GAUGE
min:<NOM_MÉTRIQUE>
Représente la valeur minimale des X valeurs transmises lors de l’intervalle.
Type stocké dans Datadog : GAUGE
sum:<NOM_MÉTRIQUE>
Représente la somme des X valeurs envoyées lors de l’intervalle.
Type stocké dans Datadog : COUNT

Exemple

Imaginons que vous envoyiez la métrique COUNT activeusers.basket_size depuis un seul host sur lequel l’Agent Datadog s’exécute. Ce host génère les valeurs suivantes lors de l’intervalle de transmission : [1,1,1,2,2,2,3,3].

L’Agent ajoute toutes les valeurs reçues durant cet intervalle. Il envoie ensuite le total, ici 15, en tant que valeur de la métrique COUNT.

Imaginons que vous envoyiez la métrique RATE queue_messages.rate depuis un seul host sur lequel l’Agent Datadog s’exécute. Ce host génère les valeurs suivantes lors de l’intervalle de transmission : [1,1,1,2,2,2,3,3].

L’Agent ajoute toutes les valeurs reçues durant cet intervalle. Il envoie ensuite le total divisé par le nombre de secondes de l’intervalle. Ici, avec un intervalle de transmission de 10 secondes, la valeur 1.5 est envoyée pour la métrique RATE.

Imaginons que vous envoyiez la métrique GAUGE temperature depuis un seul host sur lequel l’Agent Datadog s’exécute. Ce host génère les valeurs suivantes lors de l’intervalle de transmission : [71,71,71,71,71,71,71.5].

L’Agent envoie la dernière valeur transmise, ici 71.5, pour la métrique GAUGE.

Imaginons que vous envoyez la métrique HISTOGRAM request.response_time.histogram à partir d’un serveur Web. Celle-ci envoie les valeurs [1,1,1,2,2,2,3,3] lors de l’intervalle de transmission. Par défaut, l’Agent transmet les métriques suivantes à Datadog afin de représenter la distribution statistique des valeurs lors de l’intervalle :

Nom de la métriqueValeurType stocké dans Datadog
request.response_time.histogram.avg1.88GAUGE
request.response_time.histogram.count0.8RATE
request.response_time.histogram.median2GAUGE
request.response_time.histogram.95percentile3GAUGE
request.response_time.histogram.max3GAUGE

Imaginons que vous envoyiez la métrique DISTRIBUTION request.response_time.distribution à partir de deux serveurs Web : webserver:web_1 et webserver:web_2. Lors de l’intervalle de transmission donné, webserver:web_1 renvoie les valeurs [1,1,1,2,2,2,3,3] pour la métrique, tandis que webserver:web_2 renvoie les valeurs [1,1,2]. Durant cet intervalle, les cinq agrégations suivantes représentent la distribution statistique globale de l’ensemble des valeurs recueillies à partir des deux serveurs Web :

Nom de la métriqueValeurType stocké dans Datadog
avg:request.response_time.distribution1.73GAUGE
count:request.response_time.distribution11COUNT
max:request.response_time.distribution3GAUGE
min:request.response_time.distribution1GAUGE
sum:request.response_time.distribution19COUNT

Calcul des agrégations par centile

Comme d’autres types de métriques, tels que GAUGE ou HISTOGRAM, le type DISTRIBUTION dispose des agrégations suivantes : count, min, max, sum et avg. Les métriques Distribution sont initialement taguées de la même manière que les autres métriques (avec des tags personnalisés définis dans le code).

Des agrégations par centile supplémentaires (p50, p75, p90, p95 et p99) peuvent être ajoutées aux métriques Distribution. Si vous ajoutez des agrégations par centile à une métrique Distribution stockée dans Datadog, vos requêtes peuvent porter sur les cinq agrégations supplémentaires suivantes :

Nom de la métriqueValeurType stocké dans Datadog
p50:request.response_time.distribution2GAUGE
p75:request.response_time.distribution2GAUGE
p90:request.response_time.distribution3GAUGE
p95:request.response_time.distribution3GAUGE
p99:request.response_time.distribution3GAUGE

Si vous ajoutez des agrégations par centile supplémentaires à une métrique Distribution durant un intervalle donné, vous pouvez utiliser les 10 agrégations suivantes : count, sum, min, max, avg, p50, p75, p90, p95 et p99.

Personnalisation du tagging

Cette fonctionnalité vous permet de contrôler le tagging pour les métriques pour lesquelles une granularité au niveau des hosts n’est pas nécessaire. Consultez la section Metrics without Limits™ pour en savoir plus.

Remarque : l’exclusion de tags comportant le caractère ! n’est pas possible avec cette fonction.

Envoi

Envoyez vos métriques de type COUNT depuis l’une des sources suivantes :

Source de l’envoiMéthode d’envoi (python)Type envoyéType stocké dans Datadog
Check de l’Agentself.count(...)COUNTCOUNT
Check de l’Agentself.monotonic_count(...)COUNTCOUNT
APIapi.Metric.send(type="count", ...)COUNTCOUNT
DogStatsDdog.count(...)COUNTRATE
DogStatsDdog.increment(...)COUNTRATE
DogStatsDdog.decrement(...)COUNTRATE

Remarque : lorsque vous envoyez une métrique de type COUNT via DogStatsD, la métrique stockée dans Datadog possède le type RATE, afin de garantir la pertinence des comparaisons entre les différents Agents. Par conséquent, les nombres totaux StatsD peuvent comporter des décimales dans Datadog (puisqu’ils sont normalisés sur un intervalle dans le but de transmettre des unités par seconde).

Envoyez vos métriques de type RATE depuis l’une des sources suivantes :

Source de l’envoiMéthode d’envoi (python)Type envoyéType stocké dans Datadog
Check de l’Agentself.rate(...)RATEGAUGE
APIapi.Metric.send(type="rate", ...)RATERATE

Remarque : lorsque vous envoyez une métrique de type RATE via DogStatsD, la métrique stockée dans Datadog possède le type GAUGE, afin de garantir la pertinence des comparaisons entre les différents Agents.

Envoyez vos métriques de type GAUGE depuis l’une des sources suivantes :

Source de l’envoiMéthode d’envoi (python)Type envoyéType stocké dans Datadog
Check de l’Agentself.gauge(...)GAUGEGAUGE
APIapi.Metric.send(type="gauge", ...)GAUGEGAUGE
DogStatsDdog.gauge(...)GAUGEGAUGE

Envoyez vos métriques de type HISTOGRAM depuis l’une des sources suivantes :

Source de l’envoiMéthode d’envoi (python)Type envoyéTypes stockés dans Datadog
Check de l’Agentself.histogram(...)HISTOGRAMGAUGE, RATE
DogStatsDdog.histogram(...)HISTOGRAMGAUGE, RATE

L’envoi d’une métrique TIMER à l’Agent Datadog correspond à l’envoi d’une métrique HISTOGRAM dans DogStatsD. Ne confondez pas les métriques TIMER avec les timers StatsD standard. Les TIMER DogStatsD représentent uniquement les données caractérisées par une durée, par exemple le temps d’exécution d’une section de code ou le temps d’affichage d’une page entière.

Envoyez vos métriques de type DISTRIBUTION depuis la source suivante :

Source de l’envoiMéthode d’envoi (python)Type envoyéTypes stockés dans Datadog
DogStatsDdog.distribution(...)DISTRIBUTIONGAUGE, COUNT

Types envoyés et types stockés dans Datadog

Vous trouverez ci-dessous une synthèse de l’ensemble des sources et des méthodes d’envoi de métriques. Ce tableau présente la correspondance entre les types de métriques envoyés et les types stockés :

Source de l’envoiMéthode d’envoi (python)Type envoyéTypes stockés dans Datadog
Check de l’Agentself.count(...)COUNTCOUNT
Check de l’Agentself.monotonic_count(...)COUNTCOUNT
Check de l’Agentself.gauge(...)GAUGEGAUGE
Check de l’Agentself.histogram(...)HISTOGRAMGAUGE, RATE
Check de l’Agentself.rate(...)RATEGAUGE
APIapi.Metric.send(type="count", ...)COUNTCOUNT
APIapi.Metric.send(type="gauge", ...)GAUGEGAUGE
APIapi.Metric.send(type="rate", ...)RATERATE
DogStatsDdog.gauge(...)GAUGEGAUGE
DogStatsDdog.distribution(...)DISTRIBUTIONGAUGE, COUNT
DogStatsDdog.count(...)COUNTRATE
DogStatsDdog.increment(...)COUNTRATE
DogStatsDdog.decrement(...)COUNTRATE
DogStatsDdog.set(...)SETGAUGE
DogStatsDdog.histogram(...)HISTOGRAMGAUGE, RATE

Pour aller plus loin

PREVIEWING: rtrieu/product-analytics-ui-changes