statsd: provide a gauge for counters, holding the absolute count.
authorPierre-Yves Ritschard <pyr@spootnik.org>
Mon, 19 Oct 2015 09:53:26 +0000 (11:53 +0200)
committerPierre-Yves Ritschard <pyr@spootnik.org>
Fri, 6 Nov 2015 09:31:53 +0000 (10:31 +0100)
When not using StoreRates false, this allows statsd aggregators
to hold on to the absolute count, if needed.

src/statsd.c

index 1512b86..96c471d 100644 (file)
@@ -846,8 +846,19 @@ static int statsd_metric_submit_unsafe (char const *name, /* {{{ */
     else
       values[0].gauge = (gauge_t) c_avl_size (metric->set);
   }
-  else
-    values[0].derive = (derive_t) metric->value;
+  else { /* STATSD_COUNTER */
+      /*
+       * Expand a single value to two metrics:
+       *
+       * - The absolute counter, as a gauge
+       * - A derived rate for this counter
+       */
+      values[0].derive = (derive_t) metric->value;
+      plugin_dispatch_values(&vl);
+
+      sstrncpy(vl.type, "gauge", sizeof (vl.type));
+      values[0].gauge = (gauge_t) metric->value;
+  }
 
   return (plugin_dispatch_values (&vl));
 } /* }}} int statsd_metric_submit_unsafe */