public class Micrometer extends Object implements Jooby.Module
Micrometer provides a simple facade over the instrumentation clients for the most popular monitoring systems, allowing you to instrument your JVM-based application code without vendor lock-in. Think SLF4J, but for metrics.
MeterRegistry
{
use(new Micrometer());
// Timer example:
use("*", (req, rsp, chain) -> {
MeterRegistry registry = require(MeterRegistry.class);
Timer timer = registry.timer("http.server.requests");
timer.record(() -> chain.next(req, rsp));
});
}
It is possible to attach one or more monitoring system. Here are some examples:
{
use(new Micrometer()
.atlas(conf -> {
return new AtlasMeterRegistry(conf);
})
.prometheus(PrometheusMeterRegistry::new)
// etc...
);
}
Jooby creates a MeterRegistryConfig
for every available monitoring system. You
control configuration properties via .conf
file:
micrometer {
atlas {
uri: "http://localhost:7101/api/v1/publish"
}
prometheus {
step: "PT1M"
}
}
Prometheus expects to scrape or poll individual app instances for metrics. Jooby provides a ready to use prometheus handler:
import org.jooby.micrometer.PrometheusHandler;
{
use(new Micrometer()
.prometheus(PrometheusMeterRegistry::new)
);
get("/metrics", new PrometheusHandler());
}
Jooby supports the io.micrometer.core.annotation.Timed
annotation for MVC routes:
@Path("/controller") class Controller { @Timed("people.all") public People list() { ... } }App:
import org.jooby.micrometer.TimedHandler;
{
use(new Micrometer());
use("*", new TimedHandler());
}
The TimedHandler
record all the controller methods with
io.micrometer.core.annotation.Timed
annotation.
Advanced options are available via doWith
method:
{
use(new Micrometer()
.doWith(registry -> {
//work with registry
})
);
}
That's all! Happy coding!!
Constructor and Description |
---|
Micrometer() |
Modifier and Type | Method and Description |
---|---|
Micrometer |
atlas(Function<com.netflix.spectator.atlas.AtlasConfig,io.micrometer.atlas.AtlasMeterRegistry> provider)
Add an atlas registry.
|
void |
configure(Env env,
com.typesafe.config.Config conf,
com.google.inject.Binder binder) |
Micrometer |
datadog(Function<io.micrometer.datadog.DatadogConfig,io.micrometer.datadog.DatadogMeterRegistry> provider)
Add a datadog registry.
|
Micrometer |
doWith(BiConsumer<io.micrometer.core.instrument.composite.CompositeMeterRegistry,com.typesafe.config.Config> configurer)
Advanced configuration of main registry.
|
Micrometer |
doWith(Consumer<io.micrometer.core.instrument.composite.CompositeMeterRegistry> configurer)
Advanced configuration of main registry.
|
Micrometer |
dropwizard(Function<io.micrometer.core.instrument.dropwizard.DropwizardConfig,io.micrometer.core.instrument.dropwizard.DropwizardMeterRegistry> provider)
Add a dropwizard registry.
|
Micrometer |
ganglia(Function<io.micrometer.ganglia.GangliaConfig,io.micrometer.ganglia.GangliaMeterRegistry> provider)
Add a ganglia registry.
|
Micrometer |
graphite(Function<io.micrometer.graphite.GraphiteConfig,io.micrometer.graphite.GraphiteMeterRegistry> provider)
Add a graphite registry.
|
Micrometer |
influx(Function<io.micrometer.influx.InfluxConfig,io.micrometer.influx.InfluxMeterRegistry> provider)
Add an influx registry.
|
Micrometer |
jmx(Function<io.micrometer.jmx.JmxConfig,io.micrometer.jmx.JmxMeterRegistry> provider)
Add a jmx registry.
|
Micrometer |
newrelic(Function<io.micrometer.newrelic.NewRelicConfig,io.micrometer.newrelic.NewRelicMeterRegistry> provider)
Add a new-relic registry.
|
Micrometer |
prometheus(Function<io.micrometer.prometheus.PrometheusConfig,io.micrometer.prometheus.PrometheusMeterRegistry> provider)
Add a prometheus registry.
|
Micrometer |
signalfx(Function<io.micrometer.signalfx.SignalFxConfig,io.micrometer.signalfx.SignalFxMeterRegistry> provider)
Add a signalfx registry.
|
Micrometer |
simple(Function<io.micrometer.core.instrument.simple.SimpleConfig,io.micrometer.core.instrument.simple.SimpleMeterRegistry> provider)
Add a simple registry.
|
Micrometer |
statsd(Function<io.micrometer.statsd.StatsdConfig,io.micrometer.statsd.StatsdMeterRegistry> provider)
Add a statsD registry.
|
Micrometer |
wavefront(Function<io.micrometer.wavefront.WavefrontConfig,io.micrometer.wavefront.WavefrontMeterRegistry> provider)
Add a wavefront registry.
|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
config
public Micrometer doWith(@Nonnull BiConsumer<io.micrometer.core.instrument.composite.CompositeMeterRegistry,com.typesafe.config.Config> configurer)
configurer
- Configurer callback.public Micrometer doWith(@Nonnull Consumer<io.micrometer.core.instrument.composite.CompositeMeterRegistry> configurer)
configurer
- Configurer callback.public Micrometer simple(@Nonnull Function<io.micrometer.core.instrument.simple.SimpleConfig,io.micrometer.core.instrument.simple.SimpleMeterRegistry> provider)
provider
- Registry provider.public Micrometer atlas(@Nonnull Function<com.netflix.spectator.atlas.AtlasConfig,io.micrometer.atlas.AtlasMeterRegistry> provider)
provider
- Registry provider.public Micrometer datadog(@Nonnull Function<io.micrometer.datadog.DatadogConfig,io.micrometer.datadog.DatadogMeterRegistry> provider)
provider
- Registry provider.public Micrometer dropwizard(@Nonnull Function<io.micrometer.core.instrument.dropwizard.DropwizardConfig,io.micrometer.core.instrument.dropwizard.DropwizardMeterRegistry> provider)
provider
- Registry provider.public Micrometer ganglia(@Nonnull Function<io.micrometer.ganglia.GangliaConfig,io.micrometer.ganglia.GangliaMeterRegistry> provider)
provider
- Registry provider.public Micrometer graphite(@Nonnull Function<io.micrometer.graphite.GraphiteConfig,io.micrometer.graphite.GraphiteMeterRegistry> provider)
provider
- Registry provider.public Micrometer influx(@Nonnull Function<io.micrometer.influx.InfluxConfig,io.micrometer.influx.InfluxMeterRegistry> provider)
provider
- Registry provider.public Micrometer jmx(@Nonnull Function<io.micrometer.jmx.JmxConfig,io.micrometer.jmx.JmxMeterRegistry> provider)
provider
- Registry provider.public Micrometer newrelic(@Nonnull Function<io.micrometer.newrelic.NewRelicConfig,io.micrometer.newrelic.NewRelicMeterRegistry> provider)
provider
- Registry provider.public Micrometer prometheus(@Nonnull Function<io.micrometer.prometheus.PrometheusConfig,io.micrometer.prometheus.PrometheusMeterRegistry> provider)
provider
- Registry provider.public Micrometer statsd(@Nonnull Function<io.micrometer.statsd.StatsdConfig,io.micrometer.statsd.StatsdMeterRegistry> provider)
provider
- Registry provider.public Micrometer signalfx(@Nonnull Function<io.micrometer.signalfx.SignalFxConfig,io.micrometer.signalfx.SignalFxMeterRegistry> provider)
provider
- Registry provider.public Micrometer wavefront(@Nonnull Function<io.micrometer.wavefront.WavefrontConfig,io.micrometer.wavefront.WavefrontMeterRegistry> provider)
provider
- Registry provider.public void configure(Env env, com.typesafe.config.Config conf, com.google.inject.Binder binder)
configure
in interface Jooby.Module
Copyright © 2019. All rights reserved.