aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2025-01-30 00:11:41 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2025-01-30 00:24:09 +0300
commite3a485514230672eb07f60514d2bb2094af6dabd (patch)
tree408729f20808b52b67e40c6cc4793afac40e934b /library/cpp
parent8c87a67e781ed7ef2027914c5d42a787f075d2e9 (diff)
downloadydb-e3a485514230672eb07f60514d2bb2094af6dabd.tar.gz
Intermediate changes
commit_hash:c284e5d683d750f2d89e1bcccb3f4d334b47d60c
Diffstat (limited to 'library/cpp')
-rw-r--r--library/cpp/monlib/encode/unistat/unistat.h16
-rw-r--r--library/cpp/monlib/encode/unistat/unistat_decoder.cpp43
-rw-r--r--library/cpp/monlib/encode/unistat/unistat_ut.cpp16
3 files changed, 60 insertions, 15 deletions
diff --git a/library/cpp/monlib/encode/unistat/unistat.h b/library/cpp/monlib/encode/unistat/unistat.h
index 300fb6270f..2847c2c1b1 100644
--- a/library/cpp/monlib/encode/unistat/unistat.h
+++ b/library/cpp/monlib/encode/unistat/unistat.h
@@ -6,8 +6,18 @@
namespace NMonitoring {
/// Decodes unistat-style metrics
/// https://wiki.yandex-team.ru/golovan/stat-handle
- void DecodeUnistat(TStringBuf data, class IMetricConsumer* c, TStringBuf metricNameLabel = "sensor", TInstant ts = TInstant::Zero());
+ void DecodeUnistat(
+ TStringBuf data,
+ class IMetricConsumer* c,
+ TStringBuf metricNameLabel = "sensor",
+ TStringBuf metricNamePrefix = "",
+ TInstant ts = TInstant::Zero());
/// Assumes consumer's stream is open by the caller
- void DecodeUnistatToStream(TStringBuf data, class IMetricConsumer* c, TStringBuf metricNameLabel = "sensor", TInstant ts = TInstant::Zero());
-}
+ void DecodeUnistatToStream(
+ TStringBuf data,
+ class IMetricConsumer* c,
+ TStringBuf metricNameLabel = "sensor",
+ TStringBuf metricNamePrefix = "",
+ TInstant ts = TInstant::Zero());
+} // namespace NMonitoring
diff --git a/library/cpp/monlib/encode/unistat/unistat_decoder.cpp b/library/cpp/monlib/encode/unistat/unistat_decoder.cpp
index 9484e6768a..9b56e0b6a2 100644
--- a/library/cpp/monlib/encode/unistat/unistat_decoder.cpp
+++ b/library/cpp/monlib/encode/unistat/unistat_decoder.cpp
@@ -116,9 +116,15 @@ namespace NMonitoring {
class TDecoderUnistat {
private:
public:
- explicit TDecoderUnistat(IMetricConsumer* consumer, IInputStream* is, TStringBuf metricNameLabel, TInstant ts)
+ explicit TDecoderUnistat(
+ IMetricConsumer* consumer,
+ IInputStream* is,
+ TStringBuf metricNameLabel,
+ TStringBuf metricNamePrefix,
+ TInstant ts)
: Consumer_{consumer},
- MetricNameLabel(metricNameLabel),
+ MetricNameLabel_(metricNameLabel),
+ MetricNamePrefix_(metricNamePrefix),
Timestamp_{ts} {
ReadJsonTree(is, &Json_, /* throw */ true);
}
@@ -252,7 +258,7 @@ namespace NMonitoring {
Consumer_->OnMetricBegin(MetricContext_.Type);
Consumer_->OnLabelsBegin();
- Consumer_->OnLabel(MetricNameLabel, TString{MetricContext_.Name});
+ Consumer_->OnLabel(MetricNameLabel_, TStringBuilder{} << MetricNamePrefix_ << MetricContext_.Name);
for (auto&& l : MetricContext_.Labels) {
Consumer_->OnLabel(l.Name(), l.Value());
}
@@ -284,7 +290,8 @@ namespace NMonitoring {
private:
IMetricConsumer* Consumer_;
NJson::TJsonValue Json_;
- TStringBuf MetricNameLabel;
+ TStringBuf MetricNameLabel_;
+ TStringBuf MetricNamePrefix_;
TInstant Timestamp_;
struct {
@@ -299,15 +306,27 @@ namespace NMonitoring {
}
- void DecodeUnistat(TStringBuf data, IMetricConsumer* c, TStringBuf metricNameLabel, TInstant ts) {
- c->OnStreamBegin();
- DecodeUnistatToStream(data, c, metricNameLabel, ts);
- c->OnStreamEnd();
+ void DecodeUnistat(
+ TStringBuf data,
+ IMetricConsumer* c,
+ TStringBuf metricNameLabel,
+ TStringBuf metricNamePrefix,
+ TInstant ts)
+ {
+ c->OnStreamBegin();
+ DecodeUnistatToStream(data, c, metricNameLabel, metricNamePrefix, ts);
+ c->OnStreamEnd();
}
- void DecodeUnistatToStream(TStringBuf data, IMetricConsumer* c, TStringBuf metricNameLabel, TInstant ts) {
- TMemoryInput in{data.data(), data.size()};
- TDecoderUnistat decoder(c, &in, metricNameLabel, ts);
- decoder.Decode();
+ void DecodeUnistatToStream(
+ TStringBuf data,
+ IMetricConsumer* c,
+ TStringBuf metricNameLabel,
+ TStringBuf metricNamePrefix,
+ TInstant ts)
+ {
+ TMemoryInput in{data.data(), data.size()};
+ TDecoderUnistat decoder(c, &in, metricNameLabel, metricNamePrefix, ts);
+ decoder.Decode();
}
}
diff --git a/library/cpp/monlib/encode/unistat/unistat_ut.cpp b/library/cpp/monlib/encode/unistat/unistat_ut.cpp
index 08b4c602ee..da31469053 100644
--- a/library/cpp/monlib/encode/unistat/unistat_ut.cpp
+++ b/library/cpp/monlib/encode/unistat/unistat_ut.cpp
@@ -23,6 +23,22 @@ Y_UNIT_TEST_SUITE(TUnistatDecoderTest) {
UNIT_ASSERT_VALUES_EQUAL(label.GetName(), "metric_name_label");
}
+ Y_UNIT_TEST(MetricNamePrefix) {
+ constexpr auto input = TStringBuf(R"([["something_axxx", 42]])");
+
+ NProto::TMultiSamplesList samples;
+ auto encoder = EncoderProtobuf(&samples);
+
+ DecodeUnistat(input, encoder.Get(), "metric_name_label", "prefix.");
+
+ UNIT_ASSERT_VALUES_EQUAL(samples.SamplesSize(), 1);
+ auto sample = samples.GetSamples(0);
+
+ auto label = sample.GetLabels(0);
+ UNIT_ASSERT_VALUES_EQUAL(label.GetName(), "metric_name_label");
+ UNIT_ASSERT_VALUES_EQUAL(label.GetValue(), "prefix.something_axxx");
+ }
+
Y_UNIT_TEST(ScalarMetric) {
constexpr auto input = TStringBuf(R"([["something_axxx", 42]])");