Nouvelles annonces sur les technologies sans serveur et réseau ainsi que sur le RUM (Real-User Monitoring) dévoilées à la conférence Dash ! Nouvelles annonces dévoilées à la conférence Dash !

Types de métriques

Le type d’une métrique détermine la façon dont elle est agrégée dans les requêtes et les valeurs affichées sur les graphiques Datadog. Les fonctions d’agrégation temporelle par défaut et les modificateurs de type de métrique peuvent différer en fonction du type de métrique utilisé. Ce type est visible dans le volet latéral affichant les détails d’une métrique spécifique sur la page de résumé des métriques. Remarque : la modification du type de métrique depuis ce volet latéral peut affecter le comportement de la métrique dans les visualisations et les monitors existants, rendant alors les données historiques potentiellement incompréhensibles.

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

Lorsqu’une métrique est envoyée, elle est ensuite stockée dans l’application Web Datadog. Les métriques stockées peuvent être des 3 types suivants :

  • COUNT
  • RATE
  • GAUGE

Pour en savoir plus sur les différents types de métrique disponibles, consultez la section Définition des types de métrique. Consultez également les sections Types envoyés et types stockés dans Datadog pour découvrir le comportement de chaque type de métrique entre son envoi et son stockage dans Datadog.

Définition des types de métrique

Afin de mieux comprendre les différents types de métriques, ce qu’ils représentent et comment les modifier au sein de Datadog, considérez l’exemple suivant :

Vous avez deux serveurs Web : server:web_1 et server:web_2. Les deux serveurs Web reçoivent continuellement :

  • 10 requêtes HTTP pendant les 30 premières secondes, puis
  • 20 requêtes HTTP pendant les 30 secondes suivantes, puis
  • 0 requête HTTP pendant les 30 secondes suivantes.

Types de métriques envoyés

Les métriques de type COUNT représentent le nombre d’événements survenus dans une période définie, également appelée intervalle de transmission. Ce nombre d’événements peut augmenter ou diminuer dans le temps : il n’est pas strictement croissant. Un COUNT peut servir à surveiller le nombre de requêtes qui atteignent vos serveurs Web ou le nombre d’erreurs.

Remarque : le type de métrique COUNT est différent de RATE, qui représente le nombre d’événements normalisé par seconde pour la période donnée.

Par exemple, imaginons que la métrique number.of.requests.count est envoyée à Datadog toutes les 30 secondes avec le type COUNT pour server:web_1.

Chaque valeur ou point de données de cette métrique envoyée en tant que COUNT représente le nombre de requêtes reçues durant l’intervalle de transmission de 30 secondes. La métrique renvoie donc les valeurs suivantes :

  • 10 pour les 30 premières secondes
  • 20 pour le deuxième intervalle de 30 secondes
  • null pour le dernier intervalle de 30 secondes Remarque : lorsque la valeur 0 est envoyée pour une métrique COUNT, la valeur stockée dans Datadog est null.

La représentation graphique de cette métrique COUNT donne ce qui suit :

Remarque : les valeurs des métriques count StatsD s’affichent avec une valeur décimale dans Datadog, car elles sont normalisées sur l’intervalle de transmission et renvoyées en unités par seconde.

Découvrez comment envoyer des métriques count :

**Les métriques de type RATE représentent le nombre d’événements survenus dans une période définie (l’intervalle de transmission), normalisé par seconde. Le type RATE peut servir à surveiller le taux de requêtes qui atteignent vos serveurs Web.

Remarque : le type de métrique RATE est différent de COUNT, qui représente le nombre d’événements dans l’intervalle de transmission.

Par exemple, imaginons que la métrique number.of.requests.rate est envoyée à Datadog toutes les 30 secondes avec le type RATE pour server:web_1.

Chaque valeur ou point de données représente le taux de requêtes. La métrique renvoie donc les valeurs suivantes :

  • 0,33 pour les 30 premières secondes
  • 0,66 pour le deuxième intervalle de 30 secondes
  • null pour le dernier intervalle de 30 secondes Cette séquence de 0,33, 0,66, 0 se répète. Remarque : lorsque la valeur 0 est envoyée pour une métrique RATE, la valeur stockée dans Datadog est null.

Le type de métrique RATE étant la variation normalisée par seconde du nombre de requêtes, sa représentation graphique donne ce qui suit :

Découvrez comment envoyer des métriques rate :

Les métriques de type GAUGE représentent une valeur d’un certain élément évalué en continu dans le temps. Il s’agit d’un snapshot de la dernière valeur enregistrée de cet élément durant une période définie (l’intervalle de transmission). Le type GAUGE peut représenter la température ou la mémoire utilisée.

Par exemple, imaginons que la métrique number.of.requests.gauge est envoyée à Datadog toutes les 30 secondes avec le type GAUGE pour server:web_1.

Chaque valeur ou point de données représente le nombre total de requêtes reçues à un certain moment. La métrique renvoie donc les valeurs suivantes :

  • 10 pour les 30 premières secondes
  • 20 pour le deuxième intervalle de 30 secondes
  • null pour le dernier intervalle de 30 secondes

Découvrez comment envoyer des métriques gauge :

Les métriques de type HISTOGRAM vous permettent de mesurer la distribution statistique d’un ensemble de valeurs. Le type de métrique HISTOGRAM de Datadog est une extension du type de métrique timer dans StatsD : il agrège (du côté de l’Agent) les valeurs envoyées durant un intervalle donné (l’intervalle de transmission par défaut est de 10 secondes) et génère différentes valeurs temporelles représentant les différentes agrégations possibles pour l’ensemble de valeurs. Le type de métrique stocké dans Datadog varie en fonction de l’agrégation.

Par exemple : si vous envoyez X valeurs pour la métrique HISTOGRAM <NOM_MÉTRIQUE> durant un intervalle de transmission de l’Agent, l’Agent génère par défaut les séries temporelles suivantes :

AgrégationDescriptionType de métrique Datadog
<NOM_MÉTRIQUE>.avgRenvoie la moyenne des X valeurs envoyées durant l’intervalle de transmission.GAUGE
<NOM_MÉTRIQUE>.countRenvoie le nombre de points échantillonnés durant l’intervalle. Ce nombre X est ensuite 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>.medianRenvoie la médiane des X valeurs envoyées durant l’intervalle de transmission.GAUGE
<NOM_MÉTRIQUE>.95percentileRenvoie la valeur correspondant au 95e centile de ces X valeurs durant l’intervalle de transmission.GAUGE
<NOM_MÉTRIQUE>.maxRenvoie la valeur maximale de ces X valeurs envoyées durant l’intervalle de transmission.GAUGE

Par exemple, imaginons que la métrique request.response_time.histogram est envoyée à Datadog par un Agent avec le type HISTOGRAM pour server:web_1, les valeurs de l’intervalle de transmission étant [1,1,1,2,2,2,3,3]. Les métriques suivantes sont alors envoyées à Datadog pour cet intervalle de transmission :

Nom de la métriqueValeurType de métrique Datadog
request.response_time.histogram.avg1,88GAUGE
request.response_time.histogram.count8RATE
request.response_time.histogram.median2GAUGE
request.response_time.histogram.95percentile3GAUGE
request.response_time.histogram.max3GAUGE

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 peuvent être ajoutées à cette liste.
  • Configurez les agrégations en 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 95pc est envoyé à Datadog.

Découvrez comment envoyer des métriques histogram :

Cette fonctionnalité est en version bêta. Contactez l'assistance Datadog afin d'activer les métriques de distribution pour votre compte.

Les métriques de type DISTRIBUTION vous permettent d’agréger les valeurs envoyées par plusieurs hosts lors d’un intervalle de transmission afin de mesurer les distributions statistiques dans l’ensemble de votre infrastructure. Les métriques DISTRIBUTION sont conçues pour 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 l’intervalle de transmission, les métriques DISTRIBUTION envoient l’intégralité des données brutes recueillies durant un intervalle de transmission à Datadog, et les agrégations se font côté serveur. La structure de données sous-jacente représentant les données brutes et non agrégées, les distributions offrent deux fonctionnalités importantes :

  • Calcul des agrégations en centiles
  • Personnalisation du tagging

Par exemple : si vous envoyez X valeurs pour la métrique DISTRIBUTION <NOM_MÉTRIQUE> durant un intervalle, les séries temporelles suivantes peuvent être interrogées par défaut :

AgrégationDescriptionType de métrique Datadog
avg:<NOM_MÉTRIQUE>Renvoie la moyenne des X valeurs envoyées durant l’intervalle de transmission.GAUGE
count:<NOM_MÉTRIQUE>Renvoie le nombre de points échantillonnés durant l’intervalle. Ce nombre X est ensuite envoyé par l’Agent en tant que RATE, ce qui signifie que la valeur affichée dans Datadog est X/intervalle.RATE
max:<NOM_MÉTRIQUE>Renvoie la valeur maximale de ces X valeurs envoyées durant l’intervalle de transmission.GAUGE
min:<NOM_MÉTRIQUE>Renvoie la valeur minimale de ces X valeurs envoyées durant l’intervalle de transmission.GAUGE
sum:<NOM_MÉTRIQUE>Renvoie la somme de ces X valeurs envoyées durant l’intervalle de transmission.GAUGE

Par exemple, imaginons que la métrique request.response_time.distribution est envoyée à Datadog avec le type DISTRIBUTION pour server:web_1 et server:web_2. Durant un intervalle de transmission donné, server:web_1 renvoie [1,1,1,2,2,2,3,3] tandis que server:web_2 renvoie [1,1,2] pour la même métrique. Les métriques suivantes sont alors créées dans Datadog pour cet intervalle de transmission :

Nom de la métriqueValeurType de métrique Datadog
avg:request.response_time.distribution1,73GAUGE
count:request.response_time.distribution11RATE
max:request.response_time.distribution3GAUGE
min:request.response_time.distribution1GAUGE
sum:request.response_time.distribution19GAUGE

Découvrez comment envoyer des métriques Distribution avec DogStatsD.

Calcul des agrégations en centiles

Comme d’autres types de métriques, tels que GAUGE ou HISTOGRAM, le type de métrique 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 en centiles supplémentaires (p50, p75, p90, p95, p99) peuvent être ajoutées aux métriques Distribution. Ainsi, si vous ajoutez ces agrégations supplémentaires à une métrique Distribution durant un intervalle de transmission de 10 secondes, les agrégations suivantes sont disponibles : count, sum, min, max, avg, p50, p75, p90, p95 et p99.

Si vous ajoutez les agrégations en centiles à votre métrique Distribution (comme expliqué sur la page Distribution Metrics dans Datadog), les séries temporelles suivantes seront alors créées :

Nom de la métriqueValeurType de métrique 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

Remarque : dans l’exemple ci-dessus, le p50 (médiane) pour server:web_1 est 2 et le p50 pour server:web_2 est 1. Si l’agrégation était effectuée côté Agent, la valeur calculée serait la médiane des deux valeurs médianes, c’est-à-dire 1,5. En réalité, le p50 (médiane) global est la médiane de l’ensemble complet [1,1,1,1,1,2,2,2,2,3,3], qui est égal à 2. Il s’agit d’une valeur statistique exacte qui peut être renvoyée par une agrégation de métrique Distribution effectuée côté serveur.

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 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.

Les métriques de type SET comptent le nombre d’occurrences uniques d’un événement durant une certaine période.

Découvrez comment envoyer des métriques set :

Dans DogStatsD, le type de métrique TIMER est une implémentation du type de métrique HISTOGRAM (à ne pas confondre avec les timers de StatsD standard). Ces métriques mesurent uniquement les données temporelles : par exemple, le temps d’exécution d’une section de code ou le temps d’affichage d’une page entière. Pour découvrir comment instrumenter votre code afin d’envoyer des TIMER, consultez la documentation DogStatsD sur les métriques TIMER.

Types envoyés et types stockés dans Datadog

Datadog prend en charge l’envoi de métriques à partir de diverses sources :

Chaque source a ses propres limitations et le type de métrique envoyé ne correspond pas toujours exactement au type de métrique stocké dans l’application Datadog :

Source de l’envoiMéthode d’envoi (python)Type envoyéType stocké dans Datadog
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
Check de l’Agentself.count(...)COUNTCOUNT
Check de l’Agentself.increment(...)COUNTRATE
Check de l’Agentself.decrement(...)COUNTRATE
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
Check de l’Agentself.set(...)SETGAUGE