Add metrics filter
This commit is contained in:
@@ -38,7 +38,6 @@
|
||||
<groupId>io.dropwizard.metrics</groupId>
|
||||
<artifactId>metrics-core</artifactId>
|
||||
<version>${metrics.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- END Metrics -->
|
||||
|
||||
|
||||
@@ -4,11 +4,7 @@ import javax.servlet.Filter;
|
||||
import javax.servlet.ServletContextListener;
|
||||
import net.sf.ehcache.constructs.web.ShutdownListener;
|
||||
import org.directwebremoting.servlet.DwrServlet;
|
||||
import org.libresonic.player.filter.BootstrapVerificationFilter;
|
||||
import org.libresonic.player.filter.ParameterDecodingFilter;
|
||||
import org.libresonic.player.filter.RESTFilter;
|
||||
import org.libresonic.player.filter.RequestEncodingFilter;
|
||||
import org.libresonic.player.filter.ResponseHeaderFilter;
|
||||
import org.libresonic.player.filter.*;
|
||||
import org.libresonic.player.spring.AdditionalPropertySourceConfigurer;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
|
||||
@@ -140,6 +136,15 @@ public class Application extends SpringBootServletInitializer {
|
||||
return registration;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public FilterRegistrationBean metricsFilterRegistration() {
|
||||
FilterRegistrationBean registration = new FilterRegistrationBean();
|
||||
registration.setFilter(new MetricsFilter());
|
||||
registration.setOrder(7);
|
||||
return registration;
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
public Filter noCacheFilter() {
|
||||
return new ResponseHeaderFilter();
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package org.libresonic.player.filter;
|
||||
|
||||
import com.codahale.metrics.ConsoleReporter;
|
||||
import com.codahale.metrics.JmxReporter;
|
||||
import com.codahale.metrics.MetricRegistry;
|
||||
import com.codahale.metrics.Timer;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* Created by remi on 12/01/17.
|
||||
*/
|
||||
public class MetricsFilter implements Filter {
|
||||
|
||||
private final MetricRegistry metrics = new MetricRegistry();
|
||||
JmxReporter reporter;
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
reporter = JmxReporter.forRegistry(metrics)
|
||||
.convertRatesTo(TimeUnit.SECONDS.SECONDS)
|
||||
.convertDurationsTo(TimeUnit.MILLISECONDS)
|
||||
.build();
|
||||
reporter.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||
|
||||
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
|
||||
Timer requestTimer = metrics.timer(MetricRegistry.name(MetricsFilter.class, httpServletRequest.getRequestURI()));
|
||||
|
||||
Timer.Context requestTimerContext = requestTimer.time();
|
||||
|
||||
chain.doFilter(request, response);
|
||||
requestTimerContext.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
reporter.stop();
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
spring.mvc.view.prefix: /WEB-INF/jsp/
|
||||
spring.mvc.view.suffix: .jsp
|
||||
server.error.includeStacktrace: ALWAYS
|
||||
logging.level.org.springframework.web=DEBUG
|
||||
Reference in New Issue
Block a user