web-dev-qa-db-fra.com

Pourquoi il y a à la fois des compteurs et des jauges à Prométhée si les jauges peuvent agir en tant que compteurs?

Lorsque vous décidez entre Counter et Gauge, La documentation Prométhée stipule que

Pour choisir entre compteur et jauge, il existe une règle simple: si la valeur peut descendre, c'est une jauge. Les compteurs ne peuvent monter que (et réinitialiser, comme lorsqu'un processus redémarre).

Ils semblent couvrir des cas d'utilisation qui se chevauchent: vous pouvez utiliser une jauge qui n'augmente que jamais. Alors pourquoi même créer le type de contre-métrique en premier lieu? Pourquoi n'utilisez-vous simplement pas de jauges pour les deux?

9
Jose Armesto

D'un point de vue conceptuel, une jauge et un compteur ont des objectifs différents

  • une jauge représente typiquement un état, généralement dans le but de détecter la saturation.
  • la valeur absolue d'un compteur n'est pas vraiment significative, le but réel est plutôt de calculer une évolution (généralement une utilisation) avec des fonctions telles que irate/rate(), increase() ...

Ces opérations d'évolution nécessitent un calcul fiable de l'augmentation que vous ne pouviez pas réaliser avec une jauge, car vous devez détecter des réinitialisations de la valeur.

Techniquement, un comptoir a deux propriétés importantes:

  1. il commence toujours à 0
  2. il augmente toujours (c'est-à-dire incrémenté dans le code)

Si l'application redémarre entre deux éraflures Prométheus, la valeur du second gratte est susceptible d'être inférieure à celle du gratte précédent et l'augmentation peut être récupérée (quelque peu parce que vous perdrez toujours l'augmentation entre le dernier grattage et la réinitialisation).

Un simple algorithme pour calculer l'augmentation du comptoir entre les éraflures de T1 à T2 est la suivante:

  • si counter(t2) >= counter(t1) alors increase=counter(t2)-counter(t1)
  • si counter(2) < counter(t1) alors increase=counter(t2)

En conclusion, d'un point de vue technique, vous pouvez utiliser une jauge au lieu d'un compteur à condition que vous le réinitialisez à 0 au démarrage et que vous ne l'incrète que, mais toute violation du contrat entraînera des valeurs erronées.

À titre de note latérale, je m'attends également à ce que la mise en œuvre d'une comptoir utilise une représentation entière non signée pendant que la jauge utilise plutôt une représentation de points flottante. Cela a un impact mineur sur le code tel que la capacité de débordement à 0 automatiquement et de mieux prendre en charge les opérations atomiques sur les processeurs actuels.

3
Michael Doubez