package focusedCrawler.util; import java.util.concurrent.TimeUnit; import com.codahale.metrics.ConsoleReporter; import com.codahale.metrics.Counter; import com.codahale.metrics.Gauge; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Timer; public class MetricsManager { private final MetricRegistry metrics = new MetricRegistry(); private ConsoleReporter reporter = null; public MetricsManager() { this(true); } public MetricsManager(boolean startConsoleReporter) { if(startConsoleReporter) { reporter = ConsoleReporter.forRegistry(metrics) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .build(); reporter.start(10, TimeUnit.SECONDS); } } public Timer getTimer(String name) { return metrics.timer(name); } public Counter getCounter(String name) { return metrics.counter(name); } public void register(String name, Gauge<?> gauge) { metrics.register(name, gauge); } public void close() { if(reporter != null) { reporter.report(); reporter.close(); } } public MetricRegistry getMetricsRegistry() { return metrics; } }