diff --git a/server/src/main/java/org/killbill/billing/server/listeners/KillbillGuiceListener.java b/server/src/main/java/org/killbill/billing/server/listeners/KillbillGuiceListener.java
index 8c08e39..87fc64b 100644
--- a/server/src/main/java/org/killbill/billing/server/listeners/KillbillGuiceListener.java
+++ b/server/src/main/java/org/killbill/billing/server/listeners/KillbillGuiceListener.java
@@ -47,6 +47,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.health.HealthCheck;
import com.codahale.metrics.health.HealthCheckRegistry;
import com.codahale.metrics.servlets.HealthCheckServlet;
import com.codahale.metrics.servlets.MetricsServlet;
@@ -61,6 +62,8 @@ public class KillbillGuiceListener extends GuiceServletContextListener {
private static final Logger logger = LoggerFactory.getLogger(KillbillGuiceListener.class);
+ public static final ImmutableList<String> METRICS_SERVLETS_PATHS = ImmutableList.<String>of("/1.0/healthcheck", "/1.0/metrics", "/1.0/ping", "/1.0/threads");
+
private KillbillServerConfig config;
private ConfigSource configSource;
private Injector injector;
@@ -98,7 +101,11 @@ public class KillbillGuiceListener extends GuiceServletContextListener {
guiceModules = ImmutableList.<Module>of(builder.build(),
new JaxrsJacksonModule(new ObjectMapper()),
new JMXModule(KillbillHealthcheck.class, NotificationQueueService.class, PersistentBus.class),
- new StatsModule(KillbillHealthcheck.class),
+ new StatsModule(METRICS_SERVLETS_PATHS.get(0),
+ METRICS_SERVLETS_PATHS.get(1),
+ METRICS_SERVLETS_PATHS.get(2),
+ METRICS_SERVLETS_PATHS.get(3),
+ ImmutableList.<Class<? extends HealthCheck>>of(KillbillHealthcheck.class)),
getModule(event.getServletContext()));
super.contextInitialized(event);
diff --git a/server/src/main/java/org/killbill/billing/server/security/TenantFilter.java b/server/src/main/java/org/killbill/billing/server/security/TenantFilter.java
index f4a3048..6ff2055 100644
--- a/server/src/main/java/org/killbill/billing/server/security/TenantFilter.java
+++ b/server/src/main/java/org/killbill/billing/server/security/TenantFilter.java
@@ -36,6 +36,7 @@ import org.apache.shiro.authc.pam.ModularRealmAuthenticator;
import org.apache.shiro.realm.Realm;
import org.killbill.billing.jaxrs.resources.JaxrsResource;
import org.killbill.billing.server.config.DaoConfig;
+import org.killbill.billing.server.listeners.KillbillGuiceListener;
import org.killbill.billing.tenant.api.Tenant;
import org.killbill.billing.tenant.api.TenantApiException;
import org.killbill.billing.tenant.api.TenantUserApi;
@@ -120,11 +121,16 @@ public class TenantFilter implements Filter {
private boolean shouldSkipFilter(final ServletRequest request) {
boolean shouldSkip = false;
- // Chicken - egg problem
if (request instanceof HttpServletRequest) {
final HttpServletRequest httpServletRequest = (HttpServletRequest) request;
final String path = httpServletRequest.getRequestURI();
- if ("/1.0/kb/tenants".equals(path) && "POST".equals(httpServletRequest.getMethod())) {
+ if ( // Chicken - egg problem
+ ("/1.0/kb/tenants".equals(path) && "POST".equals(httpServletRequest.getMethod())) ||
+ // Metrics servlets
+ (KillbillGuiceListener.METRICS_SERVLETS_PATHS.contains(path) && "GET".equals(httpServletRequest.getMethod())) ||
+ // Welcome screen, static resources, etc.
+ (!path.startsWith("/1.0") && "GET".equals(httpServletRequest.getMethod()))
+ ) {
shouldSkip = true;
}
}