Modificateurs de type de métriques

Le type d’une métrique indique ce qu’elle représente, ainsi que sa source d’émission. Les types COUNT et RATE sont relativement similaires. En effet, ils représentent tous les deux les variations de la valeur d’une métrique au fil du temps. Cependant, ils reposent sur deux logiques différentes :

  • RATE : variation de la valeur normalisée au fil du temps (toutes les secondes).
  • COUNT : variation de la valeur absolue sur un intervalle donné.

En fonction de votre utilisation et de la méthode d’envoi, l’un des deux types peut être plus approprié pour l’envoi. Par exemple :

Type de métrique envoyéeCas d’utilisation
RATEVous souhaitez surveiller l’évolution du nombre de requêtes reçues pour plusieurs hosts.
RATEVous ne contrôlez pas la régularité des intervalles d’envoi pour l’ensemble de vos sources, donc vous normalisez chaque intervalle afin de pouvoir les comparer en amont.
COUNTVous souhaitez compter le nombre d’appels d’une fonction.
COUNTVous calculez le montant des bénéfices réalisés durant une période précise.

Puisque les types de métriques RATE et COUNT ne sont pas identiques, ils ne se comportent pas de la même manière et sont représentés différemment dans les graphiques et monitors Datadog. Pour modifier des métriques à la volée entre des visualisations RATE et COUNT, utilisez les fonctions de modification intégrées de Datadog au sein de vos graphiques et monitors.

Modificateurs intégrés à l’application

Les deux principaux modificateurs intégrés sont as_count() et as_rate().

ModificateursDescription
as_count()Définit les opérations nécessaires pour afficher la métrique donnée en tant que COUNT, afin d’obtenir la variation absolue de la valeur de la métrique sur un intervalle de cumul. Remarque : les représentations dépendent de l’intervalle de cumul ; la sélection d’un intervalle plus long modifie donc la forme de votre graphique.
as_rate()Définit les opérations nécessaires pour afficher la métrique donnée en tant que RATE, ce qui affiche la variation absolue de la valeur de la métrique par seconde.

Le comportement des métriques varie selon le type appliqué :

  • Effet de as_count() :
    • Désactive toute interpolation.
    • Définit l’agrégateur temporel sur SUM.
  • Effet de as_rate() :
    • Désactive toute interpolation.
    • Définit l’agrégateur temporel sur SUM.
    • Divise le résultat découlant de l’agrégation par l’intervalle d’échantillonnage afin de le normaliser. Par exemple, les points [1,1,1,1].as_rate() envoyés toutes les secondes avec un intervalle de cumul de 20 s génèrent les valeurs [0.05, 0.05, 0.05, 0.05].

Remarque : aucune normalisation n’est appliquée sur les intervalles de courtes durées (sans agrégation temporelle). Ainsi, les nombres totaux de valeurs brutes des métriques sont renvoyés.

  • Effet de as_count() :
    • Désactive toute interpolation.
    • Définit l’agrégateur temporel sur SUM.
    • Multiplie le résultat découlant de l’agrégation par l’intervalle d’échantillonnage. Par exemple, les points [0.05, 0.05, 0.05, 0.05].as_count() envoyés toutes les secondes avec un intervalle de cumul de 20 s génèrent les valeurs [1,1,1,1].
  • Effet de as_rate() :
    • Désactive toute interpolation.
    • Définit l’agrégateur temporel sur SUM.

Le type de métrique GAUGE représente la valeur finale et absolue d’une métrique. Les modificateurs as_count() and as_rate() ne changent pas la valeur de ce type de métrique.

Modificateur weighted()

Certains tags, comme pod_name ou container_name, font l’objet de fréquentes rotations, notamment lorsque vous créez des requêtes portant sur la gestion des coûts, la planification des capacités ou l’autoscaling d’applications conteneurisées. Pour garantir l’exactitude mathématique des requêtes sur des métriques gauge, peu importe la fréquence de rotation des tags, vous pouvez utiliser le modificateur .weighted() intégré à l’application. Il permet à Datadog de pondérer de façon adéquate les valeurs des métriques en fonction de la durée de vie des tags avec une rotation fréquente.

Le modificateur .weighted() est automatiquement ajouté aux requêtes sur des métriques gauge lorsque les deux conditions suivantes sont respectées :

  • La métrique gauge est transmise régulièrement et il n’y a aucune interpolation entre les envois.
  • L’intervalle d’envoi est correctement défini.

L’intervalle d’envoi d’une métrique est défini par l’Agent Datadog ou par une intégration au moment de l’admission. Accédez à la page Metrics Summary pour modifier des intervalles d’envoi.

Modifier un type de métrique dans Datadog

Bien que cela ne soit normalement pas requis, vous pouvez modifier le type d’une métrique sur la page Metrics Summary :

Type de métrique

Exemple de scénario :

  1. Vous disposez d’une métrique app.requests.served qui compte les requêtes traitées, mais vous l’avez envoyée par inadvertance depuis StatsD en tant que GAUGE. Le type de la métrique dans Datadog est donc GAUGE.

  2. Vous souhaitez envoyer app.requests.served en tant que métrique COUNT StatsD pour l’agréger temporellement. Cela vous permettrait de déterminer le nombre de requêtes traitées lors des dernières 24 heures, en envoyant sum:app.requests.served{*}. Cette requête est cependant illogique pour une métrique de type GAUGE.

  3. Vous souhaitez conserver le nom app.requests.served. Ainsi, au lieu d’envoyer un nouveau nom de métrique avec le type COUNT plus approprié, vous pouvez modifier le type de app.requests.served en mettant à jour :

  • Votre code d’envoi, en appelant dogstatsd.increment('app.requests.served', N) après le traitement de N requêtes.
  • Le type indiqué dans l’application Datadog sur la page Metric Summary, en le définissant sur RATE.

Ainsi, les données envoyées avant le changement de type pour app.requests.served affichent un comportement incorrect. En effet, elles ont été enregistrées dans un format qui doit être interprété comme un type GAUGE (et non comme un type RATE) au sein de l’application. Les données envoyées après l’étape 3 sont interprétées correctement.

Si vous ne souhaitez pas perdre les données historiques envoyées en tant que type GAUGE, créez un nom de métrique avec le nouveau type, en laissant le type de requête app.requests.served inchangé.

Remarque : pour le check de l’Agent, self.increment ne calcule pas le delta pour un accroissement uniforme de counter, mais signale la valeur transmise lors du check. Pour envoyer la valeur delta pour un accroissement uniforme de counter, utilisez self.monotonic_count.