blob: d3c825c43d82b7fbeb495def5d133d983d01e7b7 (
plain) (
tree)
|
|
#pragma once
#include <library/cpp/monlib/dynamic_counters/counters.h>
#include <util/string/printf.h>
namespace NMonitoring {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Percentile tracker for monitoring
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct TPercentileBase : public TThrRefBase {
using TPercentile = std::pair<float, NMonitoring::TDynamicCounters::TCounterPtr>;
using TPercentiles = TVector<TPercentile>;
TPercentiles Percentiles;
void Initialize(const TIntrusivePtr<NMonitoring::TDynamicCounters> &counters, const TVector<float> &thresholds,
TCountableBase::EVisibility visibility = TCountableBase::EVisibility::Public) {
Percentiles.reserve(thresholds.size());
for (size_t i = 0; i < thresholds.size(); ++i) {
Percentiles.emplace_back(thresholds[i],
counters->GetNamedCounter("percentile", Sprintf("%.1f", thresholds[i] * 100.f), false, visibility));
}
}
void Initialize(const TIntrusivePtr<NMonitoring::TDynamicCounters> &counters, TString group, TString subgroup,
TString name, const TVector<float> &thresholds,
TCountableBase::EVisibility visibility = TCountableBase::EVisibility::Public) {
auto subCounters = counters->GetSubgroup(group, subgroup)->GetSubgroup("sensor", name);
Initialize(subCounters, thresholds, visibility);
}
};
} // NMonitoring
|