statsd plugin: add TimerLower and TimerUpper options
authorMarc Fournier <marc.fournier@camptocamp.com>
Fri, 26 Jul 2013 13:10:08 +0000 (15:10 +0200)
committerMarc Fournier <marc.fournier@camptocamp.com>
Wed, 14 Aug 2013 14:33:37 +0000 (16:33 +0200)
The "lower" and "upper" names were chosen over "min" and "max"
to match the naming scheme used by the node.js implementation.

src/statsd.c

index 5af3483..1045aea 100644 (file)
@@ -79,6 +79,9 @@ static _Bool conf_delete_sets     = 0;
 static double *conf_timer_percentile = NULL;
 static size_t  conf_timer_percentile_num = 0;
 
+static _Bool conf_timer_lower     = 0;
+static _Bool conf_timer_upper     = 0;
+
 /* Must hold metrics_lock when calling this function. */
 static statsd_metric_t *statsd_metric_lookup_unsafe (char const *name, /* {{{ */
     metric_type_t type)
@@ -625,6 +628,10 @@ static int statsd_config (oconfig_item_t *ci) /* {{{ */
       cf_util_get_boolean (child, &conf_delete_gauges);
     else if (strcasecmp ("DeleteSets", child->key) == 0)
       cf_util_get_boolean (child, &conf_delete_sets);
+    else if (strcasecmp ("TimerLower", child->key) == 0)
+      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 ("TimerPercentile", child->key) == 0)
       statsd_config_timer_percentile (child);
     else
@@ -726,6 +733,22 @@ static int statsd_metric_submit_unsafe (char const *name, /* {{{ */
         latency_counter_get_average (metric->latency));
     plugin_dispatch_values (&vl);
 
+    if (conf_timer_lower) {
+      ssnprintf (vl.type_instance, sizeof (vl.type_instance),
+          "%s-lower", name);
+      values[0].gauge = CDTIME_T_TO_DOUBLE (
+          latency_counter_get_min (metric->latency));
+      plugin_dispatch_values (&vl);
+    }
+
+    if (conf_timer_upper) {
+      ssnprintf (vl.type_instance, sizeof (vl.type_instance),
+          "%s-upper", name);
+      values[0].gauge = CDTIME_T_TO_DOUBLE (
+          latency_counter_get_max (metric->latency));
+      plugin_dispatch_values (&vl);
+    }
+
     for (i = 0; i < conf_timer_percentile_num; i++)
     {
       ssnprintf (vl.type_instance, sizeof (vl.type_instance),