@Synchronized
@Override
public void start() {
init();
log.info("Metrics prefix: {}", conf.getMetricsPrefix());
reporters.add(CsvReporter.forRegistry(getMetrics())
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
reporters.add(StatsDReporter.forRegistry(getMetrics())
.prefixedWith(conf.getMetricsPrefix())
.build(conf.getStatsDHost(), conf.getStatsDPort()));
log.info("Configuring stats with graphite at {}:{}", conf.getGraphiteHost(), conf.getGraphitePort());
final Graphite graphite = new Graphite(new InetSocketAddress(conf.getGraphiteHost(), conf.getGraphitePort()));
reporters.add(GraphiteReporter.forRegistry(getMetrics())
.prefixedWith(conf.getMetricsPrefix())
.convertRatesTo(TimeUnit.SECONDS)
final JmxReporter jmx = JmxReporter.forRegistry(getMetrics())
.inDomain(conf.getJmxDomain())
.convertRatesTo(TimeUnit.SECONDS)
log.info("Configuring stats with ganglia at {}:{}", conf.getGangliaHost(), conf.getGangliaPort());
final GMetric ganglia = new GMetric(conf.getGangliaHost(), conf.getGangliaPort(), GMetric.UDPAddressingMode.MULTICAST, 1);
reporters.add(GangliaReporter.forRegistry(getMetrics())
.prefixedWith(conf.getMetricsPrefix())
.convertRatesTo(TimeUnit.SECONDS)