This repository has been archived by the owner on Aug 11, 2020. It is now read-only.
/
MetricsModule.java
73 lines (59 loc) · 2.63 KB
/
MetricsModule.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package org.sonatype.nexus.webapp;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.inject.AbstractModule;
import com.google.inject.servlet.ServletModule;
import com.yammer.metrics.HealthChecks;
import com.yammer.metrics.Metrics;
import com.yammer.metrics.core.Clock;
import com.yammer.metrics.core.HealthCheckRegistry;
import com.yammer.metrics.core.MetricsRegistry;
import com.yammer.metrics.core.VirtualMachineMetrics;
import com.yammer.metrics.reporting.HealthCheckServlet;
import com.yammer.metrics.reporting.MetricsServlet;
import com.yammer.metrics.reporting.PingServlet;
import com.yammer.metrics.reporting.ThreadDumpServlet;
import com.yammer.metrics.util.DeadlockHealthCheck;
import com.yammer.metrics.web.DefaultWebappMetricsFilter;
import javax.inject.Named;
/**
* ???
*
* @since 2.4
*/
public class MetricsModule
extends AbstractModule
{
@Override
protected void configure() {
// NOTE: AdminServletModule (metrics-guice intgegration) generates invalid links, so wire up servlets ourselves
install(new ServletModule()
{
@Override
protected void configureServlets() {
Clock clock = Clock.defaultClock();
bind(Clock.class).toInstance(clock);
VirtualMachineMetrics virtualMachineMetrics = VirtualMachineMetrics.getInstance();
bind(VirtualMachineMetrics.class).toInstance(virtualMachineMetrics);
JsonFactory jsonFactory = new JsonFactory(new ObjectMapper());
bind(JsonFactory.class).toInstance(jsonFactory);
HealthCheckRegistry healthCheckRegistry = HealthChecks.defaultRegistry();
bind(HealthCheckRegistry.class).toInstance(healthCheckRegistry);
healthCheckRegistry.register(new DeadlockHealthCheck(virtualMachineMetrics));
MetricsRegistry metricsRegistry = Metrics.defaultRegistry();
bind(MetricsRegistry.class).toInstance(metricsRegistry);
serve("/internal/ping").with(new PingServlet());
serve("/internal/threads").with(new ThreadDumpServlet(virtualMachineMetrics));
serve("/internal/metrics").with(new MetricsServlet(
clock,
virtualMachineMetrics,
metricsRegistry,
jsonFactory,
true
));
serve("/internal/healthcheck").with(new HealthCheckServlet(healthCheckRegistry));
filter("/*").through(new DefaultWebappMetricsFilter());
}
});
}
}