statsd plugin: add TimerSum option
authorMarc Fournier <marc.fournier@camptocamp.com>
Fri, 26 Jul 2013 13:24:37 +0000 (15:24 +0200)
committerMarc Fournier <marc.fournier@camptocamp.com>
Wed, 14 Aug 2013 14:33:37 +0000 (16:33 +0200)
src/statsd.c
src/utils_latency.c
src/utils_latency.h

index 1045aea..731a6e8 100644 (file)
@@ -81,6 +81,7 @@ static size_t  conf_timer_percentile_num = 0;
 
 static _Bool conf_timer_lower     = 0;
 static _Bool conf_timer_upper     = 0;
+static _Bool conf_timer_sum       = 0;
 
 /* Must hold metrics_lock when calling this function. */
 static statsd_metric_t *statsd_metric_lookup_unsafe (char const *name, /* {{{ */
@@ -632,6 +633,8 @@ static int statsd_config (oconfig_item_t *ci) /* {{{ */
       cf_util_get_boolean (child, &conf_timer_lower);
     else if (strcasecmp ("TimerUpper", child->key) == 0)
       cf_util_get_boolean (child, &conf_timer_upper);
+    else if (strcasecmp ("TimerSum", child->key) == 0)
+      cf_util_get_boolean (child, &conf_timer_sum);
     else if (strcasecmp ("TimerPercentile", child->key) == 0)
       statsd_config_timer_percentile (child);
     else
@@ -749,6 +752,14 @@ static int statsd_metric_submit_unsafe (char const *name, /* {{{ */
       plugin_dispatch_values (&vl);
     }
 
+    if (conf_timer_sum) {
+      ssnprintf (vl.type_instance, sizeof (vl.type_instance),
+          "%s-sum", name);
+      values[0].gauge = CDTIME_T_TO_DOUBLE (
+          latency_counter_get_sum (metric->latency));
+      plugin_dispatch_values (&vl);
+    }
+
     for (i = 0; i < conf_timer_percentile_num; i++)
     {
       ssnprintf (vl.type_instance, sizeof (vl.type_instance),
index 01c8b5c..4a250c3 100644 (file)
@@ -110,6 +110,13 @@ cdtime_t latency_counter_get_max (latency_counter_t *lc) /* {{{ */
   return (lc->max);
 } /* }}} cdtime_t latency_counter_get_max */
 
+cdtime_t latency_counter_get_sum (latency_counter_t *lc) /* {{{ */
+{
+  if (lc == NULL)
+    return (0);
+  return (lc->sum);
+} /* }}} cdtime_t latency_counter_get_sum */
+
 cdtime_t latency_counter_get_average (latency_counter_t *lc) /* {{{ */
 {
   double average;
index 3da2308..352a4ec 100644 (file)
@@ -38,6 +38,7 @@ void latency_counter_reset (latency_counter_t *lc);
 
 cdtime_t latency_counter_get_min (latency_counter_t *lc);
 cdtime_t latency_counter_get_max (latency_counter_t *lc);
+cdtime_t latency_counter_get_sum (latency_counter_t *lc);
 cdtime_t latency_counter_get_average (latency_counter_t *lc);
 cdtime_t latency_counter_get_percentile (latency_counter_t *lc,
     double percent);