Metrics: Fix timestamps, they were not epoch 83/32883/4
authorVratko Polak <vrpolak@cisco.com>
Thu, 24 Jun 2021 17:40:38 +0000 (19:40 +0200)
committerVratko Polak <vrpolak@cisco.com>
Thu, 24 Jun 2021 17:40:38 +0000 (19:40 +0200)
Library documentation [0] says this about monotonic():

  The reference point of the returned value is undefined,
  so that only the difference between the results of two calls is valid.

Switching to time().

[0] https://docs.python.org/3/library/time.html

Change-Id: Ia7ef8d89119f7dc72619cac44b213611163ff054
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
resources/tools/telemetry/metrics.py

index e5a66b3..2817601 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Metric library."""
+"""Metric library.
+
+Time measurements are done by time.time().
+Although time.time() is susceptible to big (or even negative) jumps
+when a system is badly synchronized, it is still better
+than time.monotonic(), as that value has no relation to epoch time.
+"""
 
 from collections import namedtuple
 from threading import Lock
-from time import monotonic
+from time import time
 import re
 
 
@@ -41,7 +47,7 @@ class Value:
         """
         with self._lock:
             self._value += amount
-            self._timestamp = monotonic()
+            self._timestamp = time()
 
     def set(self, value):
         """
@@ -53,7 +59,7 @@ class Value:
         """
         with self._lock:
             self._value = value
-            self._timestamp = monotonic()
+            self._timestamp = time()
 
     def get(self):
         """
@@ -616,4 +622,4 @@ class Info(MetricBase):
         :rtype: tuple
         """
         with self._lock:
-            return ((u"_info", self._value, 1.0, monotonic()),)
+            return ((u"_info", self._value, 1.0, time()),)