X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=metrics.cpp;h=86c3d591872a4a38d53d34a55216b66e4d6d1405;hb=fa54f2630c56a1df0046923d6a77b1bd58abf240;hp=86b5d231b0f0d7087036f8ccf3b7419646980c10;hpb=f5abd2ad495150cdb3c7b49d6841ece27a7fdb3e;p=nageru diff --git a/metrics.cpp b/metrics.cpp index 86b5d23..86c3d59 100644 --- a/metrics.cpp +++ b/metrics.cpp @@ -234,8 +234,11 @@ string Histogram::serialize(Metrics::Laziness laziness, const string &name, cons return ss.str(); } -Summary::Summary(const vector &quantiles, double window_seconds) - : quantiles(quantiles), window(window_seconds) {} +void Summary::init(const vector &quantiles, double window_seconds) +{ + this->quantiles = quantiles; + window = duration(window_seconds); +} void Summary::count_event(double val) { @@ -314,7 +317,13 @@ string Summary::serialize(Metrics::Laziness laziness, const string &name, const vector> 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";