diff options
author | robot-ydb-importer <robot-ydb-importer@yandex-team.com> | 2024-02-14 19:47:36 +0300 |
---|---|---|
committer | Innokentii Mokin <innokentii@ydb.tech> | 2024-02-16 18:35:13 +0000 |
commit | d6ee6054676c603f8afb27b5bd8ce7fe0a5bfbc0 (patch) | |
tree | 4aa69116e7818a4aae0bfedbfa29639b0f0b90e8 /library/python/monlib/metric.pyx | |
parent | 59ded8ecfcd805c109471346a0d4d1f269bdaa59 (diff) | |
download | ydb-d6ee6054676c603f8afb27b5bd8ce7fe0a5bfbc0.tar.gz |
YDB Import 566
96265cd0cc64e1b9bb31fe97b915ed2a09caf1cb
Diffstat (limited to 'library/python/monlib/metric.pyx')
-rw-r--r-- | library/python/monlib/metric.pyx | 162 |
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) |