无法注册JMX Metric Dropwizard

时间:2017-06-02 09:26:57

标签: maven jmx dropwizard metrics

我正在尝试在我的Dropwizard应用程序中添加JMX指标,但是当我尝试在本地进行补充时,它会给我错误。我在initalize方法的Application类中添加了以下内容:

guiceBundle.addModule(new MetricsInstrumentationModule(bootstrap.getMetricRegistry()))
bootstrap.addBundle(new JmxMetricsBundle());

在guice模块文件中,我添加了provider:

@Provides
@Singleton
MetricRegistry providesMetricRegistry(Environment environment) {
    return environment.metrics();
}

在pom.xml中添加了以下依赖项

    <dependency>
        <groupId>com.palominolabs.metrics</groupId>
        <artifactId>metrics-guice</artifactId>
        <version>3.1.3</version>
    </dependency>

在我的课堂上,我正在使用它:

 private Timer getTimer(String name) {
    return metricRegistry
            .timer(MetricRegistry.name(DocumentService.class, name));
 }


 public void method(){
     final Timer.Context context = getTimer("methodMetric").time();
     try{
          //do something
     }finally {
        context.stop();
     }

 }

但是当我提供服务时,它会抛出以下错误:

DEBUG [2017-06-02 09:01:58,059] com.codahale.metrics.JmxReporter: 
Unable to register timer! javax.management.InstanceAlreadyExistsException: 
metrics:name=io.dropwizard.jetty.MutableServletContextHandler.connect-requests


DEBUG [2017-06-02 09:01:58,066] com.codahale.metrics.JmxReporter: 
Unable to register gauge! javax.management.InstanceAlreadyExistsException: 
metrics:name=io.dropwizard.jetty.MutableServletContextHandler.percent-
4xx-1m

类似的错误消息,虽然我的应用程序正在成功启动。我不知道为什么会出现这个错误,是否存在一些localhost设置问题,这个问题不会在生产中发生或者是我遗漏的一些真正的问题。请帮忙。

编辑:   JmxMetricsBundle类:

 public class JmxMetricsBundle implements Bundle {

 public void initialize(Bootstrap<?> bootstrap) {
    JmxReporter reporter = JmxReporter.forRegistry(bootstrap.getMetricRegistry()).build();
    reporter.start();
 }

 @Override
 public void run(Environment environment) {

 }
}

0 个答案:

没有答案