Skip to content

Instantly share code, notes, and snippets.

@ivanursul
Last active May 5, 2018 15:35
Show Gist options
  • Save ivanursul/b54ea49881ed1a086192214a9e0e2b0a to your computer and use it in GitHub Desktop.
Save ivanursul/b54ea49881ed1a086192214a9e0e2b0a to your computer and use it in GitHub Desktop.
package org.startup.queue.config;
import com.codahale.metrics.JmxReporter;
import com.codahale.metrics.MetricFilter;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.graphite.Graphite;
import com.codahale.metrics.graphite.GraphiteReporter;
import com.codahale.metrics.graphite.GraphiteReporter.Builder;
import com.codahale.metrics.health.HealthCheckRegistry;
import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
import com.codahale.metrics.jvm.ThreadStatesGaugeSet;
import com.codahale.metrics.servlets.AdminServlet;
import com.ryantenney.metrics.spring.config.annotation.EnableMetrics;
import com.ryantenney.metrics.spring.config.annotation.MetricsConfigurerAdapter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.startup.queue.metrics.MetricsServletContextListener;
import javax.annotation.PostConstruct;
import java.net.InetSocketAddress;
import java.util.concurrent.TimeUnit;
@Configuration
@EnableMetrics
public class MonitoringConfiguration extends MetricsConfigurerAdapter {
@Value("${graphite.host}")
private String graphiteHost;
@Value("${graphite.port}")
private int graphitePort;
@Value("${graphite.amount.of.time.between.polls}")
private long graphiteAmountOfTimeBetweenPolls;
...
@Autowired
private Graphite graphite;
...
@Bean
public Graphite graphite() {
return new Graphite(
new InetSocketAddress(graphiteHost, graphitePort)
);
}
@Override
public void configureReporters(MetricRegistry metricRegistry) {
registerReporter(JmxReporter.forRegistry(metricRegistry).build()).start();
GraphiteReporter graphiteReporter = getGraphiteReporterBuilder(metricRegistry).build(graphite);
registerReporter(graphiteReporter);
graphiteReporter.start(graphiteAmountOfTimeBetweenPolls, TimeUnit.MILLISECONDS);
}
private Builder getGraphiteReporterBuilder(MetricRegistry metricRegistry) {
metricRegistry.register("gc", new GarbageCollectorMetricSet());
metricRegistry.register("memory", new MemoryUsageGaugeSet());
metricRegistry.register("threads", new ThreadStatesGaugeSet());
return GraphiteReporter.forRegistry(metricRegistry)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.filter(MetricFilter.ALL);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment