pankaj

create a default CSV reporter

1 package org.onlab.metrics; 1 package org.onlab.metrics;
2 2
3 +import java.io.File;
4 +import java.util.Locale;
3 import java.util.Map; 5 import java.util.Map;
6 +import java.util.concurrent.ConcurrentHashMap;
4 import java.util.concurrent.ConcurrentMap; 7 import java.util.concurrent.ConcurrentMap;
8 +import java.util.concurrent.TimeUnit;
5 9
6 import com.codahale.metrics.Counter; 10 import com.codahale.metrics.Counter;
11 +import com.codahale.metrics.CsvReporter;
7 import com.codahale.metrics.Gauge; 12 import com.codahale.metrics.Gauge;
8 import com.codahale.metrics.Histogram; 13 import com.codahale.metrics.Histogram;
9 import com.codahale.metrics.Meter; 14 import com.codahale.metrics.Meter;
...@@ -54,12 +59,24 @@ public final class MetricsManager implements MetricsService { ...@@ -54,12 +59,24 @@ public final class MetricsManager implements MetricsService {
54 /** 59 /**
55 * Registry for the Metrics objects created in the system. 60 * Registry for the Metrics objects created in the system.
56 */ 61 */
57 - private final MetricRegistry metricsRegistry = new MetricRegistry(); 62 + private final MetricRegistry metricsRegistry;
58 63
59 - public MetricsManager( 64 + /**
60 - ConcurrentMap<String, MetricsComponent> componentsRegistry) { 65 + * Default Reporter for this metrics manager.
61 - this.componentsRegistry = componentsRegistry; 66 + */
67 + private final CsvReporter reporter;
68 +
69 + public MetricsManager() {
70 + this.componentsRegistry = new ConcurrentHashMap<>();
71 + this.metricsRegistry = new MetricRegistry();
72 +
73 + this.reporter = CsvReporter.forRegistry(metricsRegistry)
74 + .formatFor(Locale.US)
75 + .convertRatesTo(TimeUnit.SECONDS)
76 + .convertDurationsTo(TimeUnit.MICROSECONDS)
77 + .build(new File("/tmp/"));
62 78
79 + reporter.start(10, TimeUnit.SECONDS);
63 } 80 }
64 81
65 /** 82 /**
......