aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/monlib/dynamic_counters
diff options
context:
space:
mode:
authormonster <monster@yandex-team.ru>2022-03-24 20:22:00 +0300
committermonster <monster@yandex-team.ru>2022-03-24 20:22:00 +0300
commit9af817fd1c586794f68b118236da5b42a74f66e4 (patch)
tree2a67d6a26306cf5f57403a0a09cf66c9b6fe5f5c /library/cpp/monlib/dynamic_counters
parentd7b7178997d5f37bd21b7eae2f8432ce869cb40e (diff)
downloadydb-9af817fd1c586794f68b118236da5b42a74f66e4.tar.gz
add name_label page parameter for prometheus format KIKIMR-14564
ref:460fd827b07d7a0cd719c88e6381600b19cdce73
Diffstat (limited to 'library/cpp/monlib/dynamic_counters')
-rw-r--r--library/cpp/monlib/dynamic_counters/encode.cpp6
-rw-r--r--library/cpp/monlib/dynamic_counters/encode.h1
-rw-r--r--library/cpp/monlib/dynamic_counters/page.cpp12
3 files changed, 16 insertions, 3 deletions
diff --git a/library/cpp/monlib/dynamic_counters/encode.cpp b/library/cpp/monlib/dynamic_counters/encode.cpp
index ffa48d276e..26328a44ee 100644
--- a/library/cpp/monlib/dynamic_counters/encode.cpp
+++ b/library/cpp/monlib/dynamic_counters/encode.cpp
@@ -95,7 +95,9 @@ namespace NMonitoring {
}
- THolder<ICountableConsumer> CreateEncoder(IOutputStream* out, EFormat format, TCountableBase::EVisibility vis) {
+ THolder<ICountableConsumer> CreateEncoder(IOutputStream* out, EFormat format,
+ TStringBuf nameLabel, TCountableBase::EVisibility vis)
+ {
switch (format) {
case EFormat::JSON:
return MakeHolder<TConsumer>(NMonitoring::EncoderJson(out), vis);
@@ -106,7 +108,7 @@ namespace NMonitoring {
NMonitoring::ECompression::ZSTD), vis);
case EFormat::PROMETHEUS:
return MakeHolder<TConsumer>(NMonitoring::EncoderPrometheus(
- out), vis);
+ out, nameLabel), vis);
default:
ythrow yexception() << "unsupported metric encoding format: " << format;
break;
diff --git a/library/cpp/monlib/dynamic_counters/encode.h b/library/cpp/monlib/dynamic_counters/encode.h
index c79964d7cb..bc39fc0029 100644
--- a/library/cpp/monlib/dynamic_counters/encode.h
+++ b/library/cpp/monlib/dynamic_counters/encode.h
@@ -10,6 +10,7 @@ namespace NMonitoring {
THolder<ICountableConsumer> CreateEncoder(
IOutputStream* out,
EFormat format,
+ TStringBuf nameLabel = "sensor",
TCountableBase::EVisibility visibility = TCountableBase::EVisibility::Public
);
diff --git a/library/cpp/monlib/dynamic_counters/page.cpp b/library/cpp/monlib/dynamic_counters/page.cpp
index 5124a47bb3..b116adfdef 100644
--- a/library/cpp/monlib/dynamic_counters/page.cpp
+++ b/library/cpp/monlib/dynamic_counters/page.cpp
@@ -31,6 +31,7 @@ void TDynamicCountersPage::Output(NMonitoring::IMonHttpRequest& request) {
OutputCallback();
}
+ TString nameLabel("sensor");
TCountableBase::EVisibility visibility{
TCountableBase::EVisibility::Public
};
@@ -46,6 +47,15 @@ void TDynamicCountersPage::Output(NMonitoring::IMonHttpRequest& request) {
parts.pop_back();
}
+ if (!parts.empty() && parts.back().StartsWith(TStringBuf("name_label="))) {
+ TVector<TString> labels;
+ StringSplitter(parts.back()).Split('=').SkipEmpty().Collect(&labels);
+ if (labels.size() == 2U) {
+ nameLabel = labels.back();
+ }
+ parts.pop_back();
+ }
+
if (!parts.empty() && parts.back() == TStringBuf("private")) {
visibility = TCountableBase::EVisibility::Private;
parts.pop_back();
@@ -90,7 +100,7 @@ void TDynamicCountersPage::Output(NMonitoring::IMonHttpRequest& request) {
ythrow yexception() << "unsupported metric encoding format: " << *format;
}
- auto encoder = CreateEncoder(&out, *format, visibility);
+ auto encoder = CreateEncoder(&out, *format, nameLabel, visibility);
counters->Accept(TString(), TString(), *encoder);
out.Flush();
}