aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/monlib/metrics
diff options
context:
space:
mode:
authormatusha-g <matusha-g@yandex-team.com>2025-07-09 13:12:35 +0300
committermatusha-g <matusha-g@yandex-team.com>2025-07-09 13:37:52 +0300
commit40a6e6e096b3533857b70c79a8ac9820655c7bf3 (patch)
tree72b70a8a4d0eb7b579d922627d0b3f0d36d292da /library/cpp/monlib/metrics
parent7c10e44e4cedbf09d754e8ff05392a9d168af143 (diff)
downloadydb-40a6e6e096b3533857b70c79a8ac9820655c7bf3.tar.gz
monlib adds
add clone method commit_hash:c96c84b95c05e307a7391742f4fca56010b24e3f
Diffstat (limited to 'library/cpp/monlib/metrics')
-rw-r--r--library/cpp/monlib/metrics/histogram_collector.h5
-rw-r--r--library/cpp/monlib/metrics/histogram_collector_explicit.cpp15
-rw-r--r--library/cpp/monlib/metrics/histogram_collector_exponential.cpp18
-rw-r--r--library/cpp/monlib/metrics/histogram_collector_linear.cpp15
-rw-r--r--library/cpp/monlib/metrics/metric_registry.cpp2
5 files changed, 55 insertions, 0 deletions
diff --git a/library/cpp/monlib/metrics/histogram_collector.h b/library/cpp/monlib/metrics/histogram_collector.h
index 718aa42bd28..86e6bf675b4 100644
--- a/library/cpp/monlib/metrics/histogram_collector.h
+++ b/library/cpp/monlib/metrics/histogram_collector.h
@@ -41,6 +41,11 @@ namespace NMonitoring {
* @return snapshot of the state of this collector.
*/
virtual IHistogramSnapshotPtr Snapshot() const = 0;
+
+ /**
+ * @return copy of collector implementation
+ */
+ virtual THolder<IHistogramCollector> Clone() = 0;
};
using IHistogramCollectorPtr = THolder<IHistogramCollector>;
diff --git a/library/cpp/monlib/metrics/histogram_collector_explicit.cpp b/library/cpp/monlib/metrics/histogram_collector_explicit.cpp
index e0422b578eb..3c2ba01f725 100644
--- a/library/cpp/monlib/metrics/histogram_collector_explicit.cpp
+++ b/library/cpp/monlib/metrics/histogram_collector_explicit.cpp
@@ -36,6 +36,21 @@ namespace NMonitoring {
return ExplicitHistogramSnapshot(Bounds_, values);
}
+ THolder<IHistogramCollector> Clone() override {
+ TBucketBounds copyBounds(Bounds_);
+ return MakeHolder<TExplicitHistogramCollector>(TExplicitHistogramCollector(copyBounds, Values_));
+ }
+
+ private:
+ TExplicitHistogramCollector(TBucketBounds bounds, TAtomicsArray const& values)
+ : Values_(bounds.size())
+ , Bounds_(std::move(bounds))
+ {
+ for(size_t i = 0; i < Values_.Size(); ++i) {
+ Values_.Add(i, values[i]);
+ }
+ }
+
private:
TAtomicsArray Values_;
TBucketBounds Bounds_;
diff --git a/library/cpp/monlib/metrics/histogram_collector_exponential.cpp b/library/cpp/monlib/metrics/histogram_collector_exponential.cpp
index 73657cda56e..702ac204375 100644
--- a/library/cpp/monlib/metrics/histogram_collector_exponential.cpp
+++ b/library/cpp/monlib/metrics/histogram_collector_exponential.cpp
@@ -43,6 +43,24 @@ namespace NMonitoring {
return new TExponentialHistogramSnapshot(Base_, Scale_, Values_.Copy());
}
+ THolder<IHistogramCollector> Clone() override {
+ return MakeHolder<TExponentialHistogramCollector>(TExponentialHistogramCollector(Values_, Base_, Scale_));
+ }
+
+ private:
+ TExponentialHistogramCollector(TAtomicsArray const& values, double base, double scale)
+ : Values_(values.Size())
+ , Base_(base)
+ , Scale_(scale)
+ , MinValue_(scale)
+ , MaxValue_(scale * std::pow(base, values.Size() - 2))
+ , LogOfBase_(std::log(base))
+ {
+ for(size_t i = 0; i < Values_.Size(); ++i) {
+ Values_.Add(i, values[i]);
+ }
+ }
+
private:
TAtomicsArray Values_;
double Base_;
diff --git a/library/cpp/monlib/metrics/histogram_collector_linear.cpp b/library/cpp/monlib/metrics/histogram_collector_linear.cpp
index b893b16a833..c6c430ab4e3 100644
--- a/library/cpp/monlib/metrics/histogram_collector_linear.cpp
+++ b/library/cpp/monlib/metrics/histogram_collector_linear.cpp
@@ -45,6 +45,21 @@ namespace NMonitoring {
StartValue_, BucketWidth_, Values_.Copy());
}
+ THolder<IHistogramCollector> Clone() override {
+ return MakeHolder<TLinearHistogramCollector>(TLinearHistogramCollector(Values_, StartValue_, BucketWidth_));
+ }
+
+ private:
+ TLinearHistogramCollector(TAtomicsArray const& values, TBucketBound startValue, TBucketBound bucketWidth)
+ : Values_(values.Size())
+ , StartValue_(startValue)
+ , BucketWidth_(bucketWidth)
+ , MaxValue_(startValue + bucketWidth * (values.Size() - 2))
+ {
+ for(size_t i = 0; i < Values_.Size(); ++i) {
+ Values_.Add(i, values[i]);
+ }
+ }
private:
TAtomicsArray Values_;
TBucketBound StartValue_;
diff --git a/library/cpp/monlib/metrics/metric_registry.cpp b/library/cpp/monlib/metrics/metric_registry.cpp
index cc2e27d1185..927c05ef611 100644
--- a/library/cpp/monlib/metrics/metric_registry.cpp
+++ b/library/cpp/monlib/metrics/metric_registry.cpp
@@ -298,6 +298,7 @@ namespace NMonitoring {
}
void TMetricRegistry::Took(TInstant time, IMetricConsumer* consumer) const {
+ consumer->OnStreamBegin();
TReadGuard g{*Lock_};
for (const auto& it: Metrics_) {
@@ -316,5 +317,6 @@ namespace NMonitoring {
);
metric->Reset();
}
+ consumer->OnStreamEnd();
}
}