]> git.sesse.net Git - nageru/blobdiff - metrics.cpp
Add the GPU memory metrics to the Grafana dashboard.
[nageru] / metrics.cpp
index 86b5d231b0f0d7087036f8ccf3b7419646980c10..86c3d591872a4a38d53d34a55216b66e4d6d1405 100644 (file)
@@ -234,8 +234,11 @@ string Histogram::serialize(Metrics::Laziness laziness, const string &name, cons
        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)
 {
@@ -314,7 +317,13 @@ string Summary::serialize(Metrics::Laziness laziness, const string &name, const
                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";