Skip to content

Commit

Permalink
Add Convert to genuine gauge option for solomon exporter
Browse files Browse the repository at this point in the history
Предыстория: Хотели сделать из rate gauge метрики, чтобы мониторинг их не усреднял, из этого родился другой коммит, но это не помогло, потому что нужно реализовывать у себя много логики из DoHandleShard. Когда в прошлый раз заиспользовали DoHandleShard не помогло, но сейчас разобравшись в коде понял что проблема была с RateDenominator, exporter по сути сам усреднял значения вместо мониторинга поэтому хочу добавить опцию RateDenominator для шард конфига, чтобы можно было форсированно ее не менять

Выкатил данный код в наш сервис и счетчики сразу стали ожидаемыми по значениям
commit_hash:f5c1c7f949bd8f84ece991b1f88af91ca8640c0c
  • Loading branch information
boltikov committed Nov 20, 2024
1 parent 38b4419 commit bb55cdf
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 1 deletion.
8 changes: 7 additions & 1 deletion yt/yt/library/profiling/solomon/cube.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ int TCube<T>::ReadSensors(
};

if constexpr (std::is_same_v<T, i64> || std::is_same_v<T, TDuration>) {
if (options.ConvertCountersToRateGauge) {
if (options.ConvertCountersToRateGauge || options.ConvertCountersToDeltaGauge) {
consumer->OnMetricBegin(NMonitoring::EMetricType::GAUGE);
} else {
consumer->OnMetricBegin(NMonitoring::EMetricType::RATE);
Expand All @@ -455,6 +455,12 @@ int TCube<T>::ReadSensors(
} else {
consumer->OnDouble(time, value.SecondsFloat() / options.RateDenominator);
}
} else if (options.ConvertCountersToDeltaGauge) {
if constexpr (std::is_same_v<T, i64>) {
consumer->OnDouble(time, value);
} else {
consumer->OnDouble(time, value.SecondsFloat());
}
} else {
// TODO(prime@): RATE is incompatible with windowed read.
if constexpr (std::is_same_v<T, i64>) {
Expand Down
1 change: 1 addition & 0 deletions yt/yt/library/profiling/solomon/cube.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ struct TReadOptions
std::function<bool(const std::string&)> SensorFilter;

bool ConvertCountersToRateGauge = false;
bool ConvertCountersToDeltaGauge = false;
bool RenameConvertedCounters = true;
double RateDenominator = 1.0;
bool EnableHistogramCompat = false;
Expand Down
11 changes: 11 additions & 0 deletions yt/yt/library/profiling/solomon/exporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ void TSolomonExporterConfig::Register(TRegistrar registrar)
.Default(true);
registrar.Parameter("rename_converted_counters", &TThis::RenameConvertedCounters)
.Default(true);
registrar.Parameter("convert_counters_to_delta_gauge", &TThis::ConvertCountersToDeltaGauge)
.Default(false);

registrar.Parameter("export_summary", &TThis::ExportSummary)
.Default(false);
Expand Down Expand Up @@ -133,6 +135,12 @@ void TSolomonExporterConfig::Register(TRegistrar registrar)
}
});

registrar.Postprocessor([] (TThis* config) {
if (config->ConvertCountersToRateForSolomon && config->ConvertCountersToDeltaGauge) {
THROW_ERROR_EXCEPTION("\"convert_counters_to_rate_for_solomon\" and \"convert_counters_to_delta_gauge\" both set to true");
}
});

registrar.Postprocessor([] (TThis* config) {
for (const auto& [name, shard] : config->Shards) {
if (!shard->GridStep) {
Expand Down Expand Up @@ -780,6 +788,9 @@ void TSolomonExporter::DoHandleShard(
options.RateDenominator = readGridStep->SecondsFloat();
}
}
if (Config_->ConvertCountersToDeltaGauge && outputEncodingContext.IsSolomonPull) {
options.ConvertCountersToDeltaGauge = true;
}

options.EnableSolomonAggregationWorkaround = outputEncodingContext.IsSolomonPull;
options.Times = readWindow;
Expand Down
1 change: 1 addition & 0 deletions yt/yt/library/profiling/solomon/exporter.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ struct TSolomonExporterConfig

bool ConvertCountersToRateForSolomon;
bool RenameConvertedCounters;
bool ConvertCountersToDeltaGauge;

bool ExportSummary;
bool ExportSummaryAsMax;
Expand Down

0 comments on commit bb55cdf

Please sign in to comment.