aboutsummaryrefslogtreecommitdiffstats
path: root/library/python/monlib/metric.pyx
diff options
context:
space:
mode:
authorrobot-ydb-importer <robot-ydb-importer@yandex-team.com>2024-02-14 19:47:36 +0300
committerInnokentii Mokin <innokentii@ydb.tech>2024-02-16 18:35:13 +0000
commitd6ee6054676c603f8afb27b5bd8ce7fe0a5bfbc0 (patch)
tree4aa69116e7818a4aae0bfedbfa29639b0f0b90e8 /library/python/monlib/metric.pyx
parent59ded8ecfcd805c109471346a0d4d1f269bdaa59 (diff)
downloadydb-d6ee6054676c603f8afb27b5bd8ce7fe0a5bfbc0.tar.gz
YDB Import 566
96265cd0cc64e1b9bb31fe97b915ed2a09caf1cb
Diffstat (limited to 'library/python/monlib/metric.pyx')
-rw-r--r--library/python/monlib/metric.pyx162
1 files changed, 162 insertions, 0 deletions
diff --git a/library/python/monlib/metric.pyx b/library/python/monlib/metric.pyx
new file mode 100644
index 0000000000..7b51752335
--- /dev/null
+++ b/library/python/monlib/metric.pyx
@@ -0,0 +1,162 @@
+from libcpp cimport bool
+
+from util.system.types cimport ui32, ui64, i64
+from library.python.monlib.metric cimport (
+ TGauge, TCounter, TRate, TIntGauge, THistogram,
+ IHistogramCollectorPtr)
+
+cdef class Gauge:
+ """
+ Represents a floating point absolute value
+ """
+ @staticmethod
+ cdef Gauge from_ptr(TGauge* native):
+ cdef Gauge wrapper = Gauge.__new__(Gauge)
+ wrapper.__wrapped = native
+
+ return wrapper
+
+ def set(self, double value):
+ """
+ Set metric to the specified value
+ :param value: metric value
+ """
+ self.__wrapped.Set(value)
+
+ def get(self):
+ """
+ Get metric value.
+ :param value: metric value
+ """
+ return self.__wrapped.Get()
+
+ def add(self, double value):
+ """
+ Add value to metric.
+ :param value: metric value
+ """
+ return self.__wrapped.Add(value)
+
+
+cdef class IntGauge:
+ """
+ Represents an integer absolute value
+ """
+ @staticmethod
+ cdef IntGauge from_ptr(TIntGauge* native):
+ cdef IntGauge wrapper = IntGauge.__new__(IntGauge)
+ wrapper.__wrapped = native
+
+ return wrapper
+
+ def set(self, i64 value):
+ """
+ Set metric to the specified value
+ :param value: metric value
+ """
+ self.__wrapped.Set(value)
+
+ def get(self):
+ """
+ Get metric value
+ :param value: metric value
+ """
+ return self.__wrapped.Get()
+
+ def add(self, i64 value):
+ """
+ Add value to metric.
+ :param value: metric value
+ """
+ return self.__wrapped.Add(value)
+
+ def inc(self):
+ """
+ Add 1 to metric.
+ """
+ return self.__wrapped.Inc()
+
+ def dec(self):
+ """
+ Add -1 to metric.
+ """
+ return self.__wrapped.Dec()
+
+
+cdef class Counter:
+ """
+ Represents a counter value
+ """
+ @staticmethod
+ cdef Counter from_ptr(TCounter* native):
+ cdef Counter wrapper = Counter.__new__(Counter)
+ wrapper.__wrapped = native
+
+ return wrapper
+
+ def get(self):
+ return self.__wrapped.Get()
+
+ def inc(self):
+ """
+ Increment metric value
+ """
+ return self.__wrapped.Inc()
+
+ def reset(self):
+ """
+ Reset metric value to zero
+ """
+ return self.__wrapped.Reset()
+
+
+cdef class Rate:
+ """
+ Represents a time derivative
+ """
+ @staticmethod
+ cdef Rate from_ptr(TRate* native):
+ cdef Rate wrapper = Rate.__new__(Rate)
+ wrapper.__wrapped = native
+
+ return wrapper
+
+ def get(self):
+ return self.__wrapped.Get()
+
+ def inc(self):
+ """
+ Increment metric value
+ """
+ return self.__wrapped.Inc()
+
+ def add(self, ui64 value):
+ """
+ Add the value to metric
+ :param value: value to add to metric
+ """
+ return self.__wrapped.Add(value)
+
+cdef class Histogram:
+ """
+ Represents some value distribution
+ """
+ @staticmethod
+ cdef Histogram from_ptr(THistogram* native):
+ cdef Histogram wrapper = Histogram.__new__(Histogram, 0)
+ wrapper.__is_owner = False
+ wrapper.__wrapped = native
+
+ return wrapper
+
+ def __dealloc__(self):
+ if self.__is_owner:
+ del self.__wrapped
+
+ def collect(self, double value, ui32 count=1):
+ """
+ Add a few points with same value to the distribution
+ :param value: points' value
+ :param value: point count
+ """
+ return self.__wrapped.Record(value, count)