return ss.str();
}
-Summary::Summary(const vector<double> &quantiles, double window_seconds)
- : quantiles(quantiles), window(window_seconds) {}
+void Summary::init(const vector<double> &quantiles, double window_seconds)
+{
+ this->quantiles = quantiles;
+ window = duration<double>(window_seconds);
+}
void Summary::count_event(double val)
{
vector<pair<string, string>> quantile_labels = labels;
quantile_labels.emplace_back("quantile", quantile_ss.str());
- ss << Metrics::serialize_name(name, quantile_labels) << " " << quantile_and_value.second << "\n";
+ double val = quantile_and_value.second;;
+ if (isnan(val)) {
+ // Prometheus can't handle “-nan”.
+ ss << Metrics::serialize_name(name, quantile_labels) << " NaN\n";
+ } else {
+ ss << Metrics::serialize_name(name, quantile_labels) << " " << val << "\n";
+ }
}
ss << Metrics::serialize_name(name + "_sum", labels) << " " << sum.load() << "\n";