package org.automon.implementations; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Timer; import org.aspectj.lang.JoinPoint; import java.util.List; import static com.codahale.metrics.MetricRegistry.name; /** * {@link org.automon.implementations.OpenMon} implementation that uses Yammer Metrics to time methods, and count exceptions. */ public class Metrics extends OpenMonBase<Timer> { private static MetricRegistry metrics = new MetricRegistry(); @Override public Timer start(JoinPoint.StaticPart jp) { return metrics.timer(name(jp.toString())); } @Override public void stop(Timer timer) { timer.time().stop(); } @Override protected void trackException(JoinPoint jp, Throwable throwable) { List<String> labels = getLabels(throwable); for (String label : labels) { metrics.counter(label).inc(); } } public static MetricRegistry getMetricRegistry() { return metrics; } public static void setMetricRegistry(MetricRegistry newMetricRegistry) { metrics = newMetricRegistry; } }