diff options
author | aleksei-le <aleksei-le@yandex-team.com> | 2024-03-19 11:58:30 +0300 |
---|---|---|
committer | aleksei-le <aleksei-le@yandex-team.com> | 2024-03-19 12:19:04 +0300 |
commit | d3a97480a3f641699d05912eff17b2c6d69bbd3f (patch) | |
tree | 0d27c27fef195d9d88ff94926906cfca1f4c908d /library/cpp/monlib/encode/prometheus/prometheus_decoder.cpp | |
parent | d51da397df035468c58197c56f8e51097d5927ea (diff) | |
download | ydb-d3a97480a3f641699d05912eff17b2c6d69bbd3f.tar.gz |
manage prometheus
a543f08a6f2957757c54b3f9e5a095389a51dbeb
Diffstat (limited to 'library/cpp/monlib/encode/prometheus/prometheus_decoder.cpp')
-rw-r--r-- | library/cpp/monlib/encode/prometheus/prometheus_decoder.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/library/cpp/monlib/encode/prometheus/prometheus_decoder.cpp b/library/cpp/monlib/encode/prometheus/prometheus_decoder.cpp index d1d0d9e0f2..313651ba8f 100644 --- a/library/cpp/monlib/encode/prometheus/prometheus_decoder.cpp +++ b/library/cpp/monlib/encode/prometheus/prometheus_decoder.cpp @@ -71,6 +71,9 @@ namespace NMonitoring { using TBucketData = std::pair<TBucketBound, TBucketValue>; constexpr static TBucketData ZERO_BUCKET = { -std::numeric_limits<TBucketBound>::max(), 0 }; public: + THistogramBuilder(TPrometheusDecodeSettings settings) + : Settings_(settings) { + } TStringBuf GetName() const noexcept { return Name_; } @@ -125,7 +128,6 @@ namespace NMonitoring { Bounds_.push_back(bound); Values_.push_back(value - PrevBucket_.second); // keep only delta between buckets - PrevBucket_ = { bound, value }; } @@ -150,6 +152,7 @@ namespace NMonitoring { TBucketBounds Bounds_; TBucketValues Values_; TBucketData PrevBucket_ = ZERO_BUCKET; + TPrometheusDecodeSettings Settings_; }; /////////////////////////////////////////////////////////////////////// @@ -168,10 +171,12 @@ namespace NMonitoring { /////////////////////////////////////////////////////////////////////// class TPrometheusReader { public: - TPrometheusReader(TStringBuf data, IMetricConsumer* c, TStringBuf metricNameLabel) + TPrometheusReader(TStringBuf data, IMetricConsumer* c, TStringBuf metricNameLabel, const TPrometheusDecodeSettings& settings = TPrometheusDecodeSettings{}) : Data_(data) , Consumer_(c) , MetricNameLabel_(metricNameLabel) + , Settings_(settings) + , HistogramBuilder_(settings) { } @@ -272,12 +277,14 @@ namespace NMonitoring { TStringBuf baseName = name; EPrometheusMetricType type = EPrometheusMetricType::UNTYPED; - if (auto* seenType = SeenTypes_.FindPtr(name)) { - type = *seenType; - } else { - baseName = NPrometheus::ToBaseName(name); - if (auto* baseType = SeenTypes_.FindPtr(baseName)) { - type = *baseType; + if (Settings_.Mode != EPrometheusDecodeMode::RAW) { + if (auto* seenType = SeenTypes_.FindPtr(name)) { + type = *seenType; + } else { + baseName = NPrometheus::ToBaseName(name); + if (auto* baseType = SeenTypes_.FindPtr(baseName)) { + type = *baseType; + } } } @@ -584,6 +591,7 @@ namespace NMonitoring { TStringBuf Data_; IMetricConsumer* Consumer_; TStringBuf MetricNameLabel_; + TPrometheusDecodeSettings Settings_; THashMap<TString, EPrometheusMetricType> SeenTypes_; THistogramBuilder HistogramBuilder_; @@ -593,8 +601,8 @@ namespace NMonitoring { }; } // namespace -void DecodePrometheus(TStringBuf data, IMetricConsumer* c, TStringBuf metricNameLabel) { - TPrometheusReader reader(data, c, metricNameLabel); +void DecodePrometheus(TStringBuf data, IMetricConsumer* c, TStringBuf metricNameLabel, const TPrometheusDecodeSettings& settings) { + TPrometheusReader reader(data, c, metricNameLabel, settings); reader.Read(); } |