/** * Method: init * Purpose: Initializes the embedded Jetty Server with including the metrics servlets. */ private void init() { LOG.info("Initializing Kafka Http Metrics Reporter"); // creating the socket address for binding to the specified address and port InetSocketAddress inetSocketAddress = new InetSocketAddress(bindAddress, port); // create new Jetty server server = new Server(inetSocketAddress); // creating the servlet context handler ServletContextHandler servletContextHandler = new ServletContextHandler(); // setting the context path servletContextHandler.setContextPath("/"); // adding the codahale metrics servlet to the servlet context servletContextHandler.addServlet(new ServletHolder(new AdminServlet()), "/api"); servletContextHandler.addServlet(new ServletHolder(new MetricsServlet()), "/api/metrics"); servletContextHandler.addServlet(new ServletHolder(new ThreadDumpServlet()), "/api/threads"); servletContextHandler.addServlet(new ServletHolder(new HealthCheckServlet()), "/api/healthcheck"); servletContextHandler.addServlet(new ServletHolder(new PingServlet()), "/api/ping"); // adding the configured servlet context handler to the Jetty Server server.setHandler(servletContextHandler); LOG.info("Finished initializing Kafka Http Metrics Reporter"); }
@Override public void init(ServletConfig config) throws ServletException { super.init(config); healthCheckServlet.init(config); metricsServlet.init(config); pingServlet.init(config); threadDumpServlet.init(config); final ServletContext context = config.getServletContext(); this.contextPath = context.getContextPath(); this.metricsUri = getParam(config.getInitParameter("metrics-uri"), this.metricsUri); this.pingUri = getParam(config.getInitParameter("ping-uri"), this.pingUri); this.threadsUri = getParam(config.getInitParameter("threads-uri"), this.threadsUri); this.healthcheckUri = getParam(config.getInitParameter("healthcheck-uri"), this.healthcheckUri); }
@Override public AdminServlet get() { for (HealthCheck healthCheck : healthChecks) { healthCheckRegistry.register(healthCheck); } final JsonFactory factory = jsonFactory == null ? new JsonFactory(new ObjectMapper()) : jsonFactory; return new AdminServlet(new HealthCheckServlet(healthCheckRegistry), new MetricsServlet(Clock.defaultClock(), VirtualMachineMetrics.getInstance(), metricsRegistry, factory, true), new PingServlet(), new ThreadDumpServlet(VirtualMachineMetrics.getInstance()), healthcheckUri, metricsUri, pingUri, threadsUri); } }
/** * This method is adapted from ServerFactory.createInternalServlet. */ private void createInternalServlet(final ExtendedEnvironment env, final ServletContext context) { if (context.getMajorVersion() >= 3) { // Add the Task servlet final ServletRegistration.Dynamic taskServlet = context.addServlet("TaskServlet", new TaskServlet(env.getTasks())); taskServlet.setAsyncSupported(true); taskServlet.addMapping("/tasks/*"); // Add the Admin servlet final ServletRegistration.Dynamic adminServlet = context.addServlet("AdminServlet", new AdminServlet()); adminServlet.setAsyncSupported(true); adminServlet.addMapping("/admin/*"); } else throw new IllegalStateException("The WizToWar adapter doesn't support servlet versions under 3"); }
@Override protected void configureServlets() { bind(GuiceContainer.class).to(DropwizardGuiceContainer.class); // Bind Jersey @Provider classes bindCatchallExceptionMapper(binder()); bind(InvalidEntityExceptionMapper.class); bind(JsonProcessingExceptionMapper.class); bind(InstrumentedResourceMethodDispatchAdapter.class).toInstance(new InstrumentedResourceMethodDispatchAdapter()); bind(CacheControlledResourceMethodDispatchAdapter.class); bind(OptionalQueryParamInjectableProvider.class); bind(Lifecycle.class).toInstance(lifecycle); bind(getConfigurationClass()).toInstance(conf); if (conf.getAdminConfiguration().isPresent()) { AdminConfiguration adminConf = conf.getAdminConfiguration().get(); filter("/admin/*").through(new BasicAuthFilter(adminConf.getUsername(), adminConf.getPassword())); serve("/admin/*").with(new AdminServlet()); } bind(HealthCheckRegistry.class).toInstance(HealthChecks.defaultRegistry()); HealthChecks.defaultRegistry().register(new DeadlockHealthCheck()); serve("/*").with(GuiceContainer.class); } }), createModules(conf)));
context.addServlet(new ServletHolder(new com.yammer.metrics.reporting.AdminServlet()), "/metrics/*");