如何从Actuator / metrics端点排除Hystrix指标?

时间:2016-01-20 09:46:20

标签: spring spring-boot spring-cloud hystrix spring-boot-actuator

我有一个启动了Actuator和Hystrix的spring-boot-app Spring-Boot-Version:1.3.1.RELEASE

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

当我向某些方法添加@HystrixCommand时,/metrics端点会显示来自hystrix的所有指标:

gauge.hystrix.HystrixCommand.RestEndpoints.TestController.test.errorPercentage: 0,
gauge.hystrix.HystrixThreadPool.RestEndpoints.rollingMaxActiveThreads: 1,
...

问题:
如何从/metrics端点完全排除hystrix-metrics?

更新1
我试图用这些方法排除ServoMetrics和SpectatorMetrics:

1)

@EnableAutoConfiguration(exclude={ServoMetricsAutoConfiguration.class,
 SpectatorMetricsAutoConfiguration.class} )

2)

@SpringBootApplication(exclude={ServoMetricServices.class, SpectatorMetricServices.class})

但两者都没有取得预期的效果。

2 个答案:

答案 0 :(得分:4)

创建并修复了此issue。在快照中,您现在可以设置以下内容: hystrix.metrics.enabled=false

答案 1 :(得分:0)

如果您不想要任何其他指标,更好的解决方案是创建自己的MetricsRegistry。这样,任何其他未来的代码更改(在构建的指标中添加更多更多的jar)都不会影响。

@Configuration
public class MetricsConfiguration {

  private MetricRegistry metricRegistry;

  MetricsConfiguration() {
    //avoid other metrics already registered
    metricRegistry = new MetricRegistry();
  }

}

注意:创建MetricRegistry类型的@Bean无济于事,因为Spring autoconfigure将使用此Bean对象而不是MetricsRegistry object from MetricsDropwizardAutoConfiguration.java