package mireka.startup; import java.io.IOException; import java.util.concurrent.TimeUnit; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import com.yammer.metrics.Metrics; /** * GraphiteReporter sends metrics data maintained by the Metrics library to a * Graphite server for graphical viewing. * * @see <a href="http://metrics.codahale.com/">Metrics library</a> * @see <a href="http://graphite.wikidot.com/">Graphite</a> */ public class GraphiteReporter { private String host; private int port = 2003; private String prefix = "mail"; private long period = 10; private TimeUnit periodUnit = TimeUnit.SECONDS; private com.yammer.metrics.reporting.GraphiteReporter reporter; @PostConstruct public void start() { try { reporter = new com.yammer.metrics.reporting.GraphiteReporter( Metrics.defaultRegistry(), host, port, prefix); reporter.start(period, periodUnit); } catch (IOException e) { throw new RuntimeException(e); } } @PreDestroy public void stop() { reporter.shutdown(); } public void setHost(String host) { this.host = host; } public void setPort(int port) { this.port = port; } public void setPrefix(String prefix) { this.prefix = prefix; } public void setPeriod(long period) { this.period = period; } public void setPeriodUnit(TimeUnit periodUnit) { this.periodUnit = periodUnit; } }