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 :
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.
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.
Consultez la section Types envoyés et types stockés pour découvrir comment les types de métriques envoyés sont associés aux types stockés correspondants.
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 :
Nouveau nom de métrique | Description | Type stocké dans Datadog |
---|---|---|
<NOM_MÉTRIQUE>.avg | Représente la moyenne des X valeurs envoyées durant l’intervalle. | 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 est X/intervalle . | RATE |
<NOM_MÉTRIQUE>.median | Représente la médiane des X valeurs envoyées durant l’intervalle. | GAUGE |
<NOM_MÉTRIQUE>.95percentile | Représente le 95e centile des X valeurs envoyées durant l’intervalle. | GAUGE |
<NOM_MÉTRIQUE>.max | Représente la valeur maximale des X valeurs envoyées durant l’intervalle. | GAUGE |
Remarques :
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.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, et les agrégations se font 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 :
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 :
Agrégation | Description | Type stocké dans Datadog |
---|---|---|
avg:<NOM_MÉTRIQUE> | Représente la moyenne des X valeurs envoyées durant l’intervalle. | 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. | COUNT |
max:<NOM_MÉTRIQUE> | Représente la valeur maximale des X valeurs envoyées durant l’intervalle. | GAUGE |
min:<NOM_MÉTRIQUE> | Représente la valeur minimale des X valeurs envoyées durant l’intervalle. | GAUGE |
sum:<NOM_MÉTRIQUE> | Représente la somme de l’ensemble des X valeurs envoyées durant l’intervalle. | COUNT |
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 et envoie 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 et envoie 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étrique | Valeur | Type stocké dans Datadog |
---|---|---|
request.response_time.histogram.avg | 1.88 | GAUGE |
request.response_time.histogram.count | 8 | RATE |
request.response_time.histogram.median | 2 | GAUGE |
request.response_time.histogram.95percentile | 3 | GAUGE |
request.response_time.histogram.max | 3 | GAUGE |
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étrique | Valeur | Type stocké dans Datadog |
---|---|---|
avg:request.response_time.distribution | 1.73 | GAUGE |
count:request.response_time.distribution | 11 | COUNT |
max:request.response_time.distribution | 3 | GAUGE |
min:request.response_time.distribution | 1 | GAUGE |
sum:request.response_time.distribution | 19 | COUNT |
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étrique | Valeur | Type stocké dans Datadog |
---|---|---|
p50:request.response_time.distribution | 2 | GAUGE |
p75:request.response_time.distribution | 2 | GAUGE |
p90:request.response_time.distribution | 3 | GAUGE |
p95:request.response_time.distribution | 3 | GAUGE |
p99:request.response_time.distribution | 3 | GAUGE |
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
.
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 page Métriques de distribution pour en savoir plus sur le contrôle des tags à partir d’une liste blanche.
Remarque : l’exclusion de tags comportant le caractère !
n’est pas possible avec cette fonction.
Envoyez vos métriques de type COUNT depuis l’une des sources suivantes :
Source de l’envoi | Méthode d’envoi (python) | Type envoyé | Type stocké dans Datadog |
---|---|---|---|
Check de l’Agent | self.count(...) | COUNT | COUNT |
Check de l’Agent | self.monotonic_count(...) | COUNT | COUNT |
API | api.Metric.send(type="count", ...) | COUNT | COUNT |
DogStatsD | dog.count(...) | COUNT | RATE |
DogStatsD | dog.increment(...) | COUNT | RATE |
DogStatsD | dog.decrement(...) | COUNT | RATE |
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 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’envoi | Méthode d’envoi (python) | Type envoyé | Type stocké dans Datadog |
---|---|---|---|
Check de l’Agent | self.rate(...) | RATE | GAUGE |
API | api.Metric.send(type="rate", ...) | RATE | RATE |
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’envoi | Méthode d’envoi (python) | Type envoyé | Type stocké dans Datadog |
---|---|---|---|
Check de l’Agent | self.gauge(...) | GAUGE | GAUGE |
API | api.Metric.send(type="gauge", ...) | GAUGE | GAUGE |
DogStatsD | dog.gauge(...) | GAUGE | GAUGE |
Envoyez vos métriques de type HISTOGRAM depuis l’une des sources suivantes :
Source de l’envoi | Méthode d’envoi (python) | Type envoyé | Types stockés dans Datadog |
---|---|---|---|
Check de l’Agent | self.histogram(...) | HISTOGRAM | GAUGE, RATE |
DogStatsD | dog.histogram(...) | HISTOGRAM | GAUGE, RATE |
Remarque : 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 et les timers de StatsD standard. Les métriques TIMER 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’envoi | Méthode d’envoi (python) | Type envoyé | Types stockés dans Datadog |
---|---|---|---|
DogStatsD | dog.distribution(...) | DISTRIBUTION | GAUGE, COUNT |
Vous trouverez ci-dessous une synthèse de l’ensemble des sources et des méthodes d’envoi de métriques, avec la correspondance entre les types de métriques envoyés et les types stockés :
Source de l’envoi | Méthode d’envoi (python) | Type envoyé | Types stockés dans Datadog |
---|---|---|---|
Check de l’Agent | self.count(...) | COUNT | COUNT |
Check de l’Agent | self.monotonic_count(...) | COUNT | COUNT |
Check de l’Agent | self.gauge(...) | GAUGE | GAUGE |
Check de l’Agent | self.histogram(...) | HISTOGRAM | GAUGE, RATE |
Check de l’Agent | self.rate(...) | RATE | GAUGE |
API | api.Metric.send(type="count", ...) | COUNT | COUNT |
API | api.Metric.send(type="gauge", ...) | GAUGE | GAUGE |
API | api.Metric.send(type="rate", ...) | RATE | RATE |
DogStatsD | dog.gauge(...) | GAUGE | GAUGE |
DogStatsD | dog.distribution(...) | DISTRIBUTION | GAUGE, COUNT |
DogStatsD | dog.count(...) | COUNT | RATE |
DogStatsD | dog.increment(...) | COUNT | RATE |
DogStatsD | dog.decrement(...) | COUNT | RATE |
DogStatsD | dog.set(...) | SET | GAUGE |
DogStatsD | dog.histogram(...) | HISTOGRAM | GAUGE, RATE |
Documentation, liens et articles supplémentaires utiles: