diff options
author | Sergey Polovko <sergey@polovko.me> | 2022-02-10 16:47:03 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:03 +0300 |
commit | 2e714b5ebd40a1f4cc31c27f1ad6e49ca6d895f5 (patch) | |
tree | b83306b6e37edeea782e9eed673d89286c4fef35 /library/cpp/monlib/dynamic_counters/encode.cpp | |
parent | 3e0b762a82514bac89c1dd6ea7211e381d8aa248 (diff) | |
download | ydb-2e714b5ebd40a1f4cc31c27f1ad6e49ca6d895f5.tar.gz |
Restoring authorship annotation for Sergey Polovko <sergey@polovko.me>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/monlib/dynamic_counters/encode.cpp')
-rw-r--r-- | library/cpp/monlib/dynamic_counters/encode.cpp | 214 |
1 files changed, 107 insertions, 107 deletions
diff --git a/library/cpp/monlib/dynamic_counters/encode.cpp b/library/cpp/monlib/dynamic_counters/encode.cpp index 8a8b31314b..ffa48d276e 100644 --- a/library/cpp/monlib/dynamic_counters/encode.cpp +++ b/library/cpp/monlib/dynamic_counters/encode.cpp @@ -1,131 +1,131 @@ -#include "encode.h" - -#include <library/cpp/monlib/encode/encoder.h> -#include <library/cpp/monlib/encode/json/json.h> -#include <library/cpp/monlib/encode/spack/spack_v1.h> +#include "encode.h" + +#include <library/cpp/monlib/encode/encoder.h> +#include <library/cpp/monlib/encode/json/json.h> +#include <library/cpp/monlib/encode/spack/spack_v1.h> #include <library/cpp/monlib/encode/prometheus/prometheus.h> - -#include <util/stream/str.h> - -namespace NMonitoring { - namespace { - constexpr TInstant ZERO_TIME = TInstant::Zero(); - - class TConsumer final: public ICountableConsumer { - using TLabel = std::pair<TString, TString>; // name, value - - public: - explicit TConsumer(NMonitoring::IMetricEncoderPtr encoderImpl, TCountableBase::EVisibility vis) - : EncoderImpl_(std::move(encoderImpl)) + +#include <util/stream/str.h> + +namespace NMonitoring { + namespace { + constexpr TInstant ZERO_TIME = TInstant::Zero(); + + class TConsumer final: public ICountableConsumer { + using TLabel = std::pair<TString, TString>; // name, value + + public: + explicit TConsumer(NMonitoring::IMetricEncoderPtr encoderImpl, TCountableBase::EVisibility vis) + : EncoderImpl_(std::move(encoderImpl)) , Visibility_{vis} - { - } - - void OnCounter( - const TString& labelName, const TString& labelValue, - const TCounterForPtr* counter) override { - NMonitoring::EMetricType metricType = counter->ForDerivative() - ? NMonitoring::EMetricType::RATE - : NMonitoring::EMetricType::GAUGE; - EncoderImpl_->OnMetricBegin(metricType); - EncodeLabels(labelName, labelValue); - - if (metricType == NMonitoring::EMetricType::GAUGE) { - EncoderImpl_->OnDouble(ZERO_TIME, static_cast<double>(counter->Val())); - } else { - EncoderImpl_->OnUint64(ZERO_TIME, counter->Val()); - } - - EncoderImpl_->OnMetricEnd(); - } - - void OnHistogram( - const TString& labelName, const TString& labelValue, + { + } + + void OnCounter( + const TString& labelName, const TString& labelValue, + const TCounterForPtr* counter) override { + NMonitoring::EMetricType metricType = counter->ForDerivative() + ? NMonitoring::EMetricType::RATE + : NMonitoring::EMetricType::GAUGE; + EncoderImpl_->OnMetricBegin(metricType); + EncodeLabels(labelName, labelValue); + + if (metricType == NMonitoring::EMetricType::GAUGE) { + EncoderImpl_->OnDouble(ZERO_TIME, static_cast<double>(counter->Val())); + } else { + EncoderImpl_->OnUint64(ZERO_TIME, counter->Val()); + } + + EncoderImpl_->OnMetricEnd(); + } + + void OnHistogram( + const TString& labelName, const TString& labelValue, IHistogramSnapshotPtr snapshot, bool derivative) override { NMonitoring::EMetricType metricType = derivative ? EMetricType::HIST_RATE : EMetricType::HIST; EncoderImpl_->OnMetricBegin(metricType); - EncodeLabels(labelName, labelValue); - EncoderImpl_->OnHistogram(ZERO_TIME, snapshot); - EncoderImpl_->OnMetricEnd(); - } - - void OnGroupBegin( - const TString& labelName, const TString& labelValue, - const TDynamicCounters*) override { + EncodeLabels(labelName, labelValue); + EncoderImpl_->OnHistogram(ZERO_TIME, snapshot); + EncoderImpl_->OnMetricEnd(); + } + + void OnGroupBegin( + const TString& labelName, const TString& labelValue, + const TDynamicCounters*) override { if (labelName.empty() && labelValue.empty()) { - // root group has empty label name and value - EncoderImpl_->OnStreamBegin(); - } else { - ParentLabels_.emplace_back(labelName, labelValue); - } - } - - void OnGroupEnd( - const TString& labelName, const TString& labelValue, - const TDynamicCounters*) override { + // root group has empty label name and value + EncoderImpl_->OnStreamBegin(); + } else { + ParentLabels_.emplace_back(labelName, labelValue); + } + } + + void OnGroupEnd( + const TString& labelName, const TString& labelValue, + const TDynamicCounters*) override { if (labelName.empty() && labelValue.empty()) { - // root group has empty label name and value - EncoderImpl_->OnStreamEnd(); - EncoderImpl_->Close(); - } else { - ParentLabels_.pop_back(); - } - } - + // root group has empty label name and value + EncoderImpl_->OnStreamEnd(); + EncoderImpl_->Close(); + } else { + ParentLabels_.pop_back(); + } + } + TCountableBase::EVisibility Visibility() const override { return Visibility_; } - private: - void EncodeLabels(const TString& labelName, const TString& labelValue) { - EncoderImpl_->OnLabelsBegin(); - for (const auto& label : ParentLabels_) { - EncoderImpl_->OnLabel(label.first, label.second); - } - EncoderImpl_->OnLabel(labelName, labelValue); - EncoderImpl_->OnLabelsEnd(); - } - - private: - NMonitoring::IMetricEncoderPtr EncoderImpl_; - TVector<TLabel> ParentLabels_; + private: + void EncodeLabels(const TString& labelName, const TString& labelValue) { + EncoderImpl_->OnLabelsBegin(); + for (const auto& label : ParentLabels_) { + EncoderImpl_->OnLabel(label.first, label.second); + } + EncoderImpl_->OnLabel(labelName, labelValue); + EncoderImpl_->OnLabelsEnd(); + } + + private: + NMonitoring::IMetricEncoderPtr EncoderImpl_; + TVector<TLabel> ParentLabels_; TCountableBase::EVisibility Visibility_; - }; - - } - + }; + + } + THolder<ICountableConsumer> CreateEncoder(IOutputStream* out, EFormat format, TCountableBase::EVisibility vis) { - switch (format) { - case EFormat::JSON: + switch (format) { + case EFormat::JSON: return MakeHolder<TConsumer>(NMonitoring::EncoderJson(out), vis); - case EFormat::SPACK: + case EFormat::SPACK: return MakeHolder<TConsumer>(NMonitoring::EncoderSpackV1( - out, - NMonitoring::ETimePrecision::SECONDS, + out, + NMonitoring::ETimePrecision::SECONDS, NMonitoring::ECompression::ZSTD), vis); case EFormat::PROMETHEUS: return MakeHolder<TConsumer>(NMonitoring::EncoderPrometheus( out), vis); - default: - ythrow yexception() << "unsupported metric encoding format: " << format; - break; - } - } - + default: + ythrow yexception() << "unsupported metric encoding format: " << format; + break; + } + } + THolder<ICountableConsumer> AsCountableConsumer(IMetricEncoderPtr encoder, TCountableBase::EVisibility visibility) { return MakeHolder<TConsumer>(std::move(encoder), visibility); } - void ToJson(const TDynamicCounters& counters, IOutputStream* out) { - TConsumer consumer{EncoderJson(out), TCountableBase::EVisibility::Public}; - counters.Accept(TString{}, TString{}, consumer); - } - - TString ToJson(const TDynamicCounters& counters) { - TStringStream ss; - ToJson(counters, &ss); - return ss.Str(); - } - -} + void ToJson(const TDynamicCounters& counters, IOutputStream* out) { + TConsumer consumer{EncoderJson(out), TCountableBase::EVisibility::Public}; + counters.Accept(TString{}, TString{}, consumer); + } + + TString ToJson(const TDynamicCounters& counters) { + TStringStream ss; + ToJson(counters, &ss); + return ss.Str(); + } + +} |