在 Spring Boot with Actuator 中显示丰富的指标
Display rich metrics in Spring Boot with Actuator
我开发了一个 Spring 版本为 1.2 的启动应用程序。4.RELEASE 并且想使用 Actuator 测量一些指标数据。
我在 http://localhost:8080/metrics 获取了一些数据,但我希望在那里公开丰富的数据,例如我的请求的平均测量时间。
我发现 Actuator 插件中包含一个 RichGauge class,它可以满足我的需要,但它似乎没有被使用。我也无法在 google 上找到有关如何实现该目标的任何信息。
这是我的 pom.xml 的片段,其中包含 spring 依赖项:
<properties>
<spring.boot.version>1.2.4.RELEASE</spring.boot.version>
</properties>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>${spring.boot.version}</version>
</dependency>
如何使用执行器插件测量丰富的指标数据?是否有一些配置或我需要一些代码来实现它?
我成功搞定了运行下面的代码
@SpringBootApplication
public class SpringBootRichMetricsTestApplication {
private final InMemoryMetricRepository counterMetricRepository = new InMemoryMetricRepository();
@Bean
@Primary
public InMemoryRichGaugeRepository inMemoryRichGaugeRepository() {
return new InMemoryRichGaugeRepository();
}
@Bean
public CounterService counterService() {
return new DefaultCounterService(counterMetricRepository);
}
// bean must not be named metricReaderPublicMetrics, one with that name already exists and the other one silently wins
@Bean
public MetricReaderPublicMetrics counterMetricReaderPublicMetrics() {
return new MetricReaderPublicMetrics(counterMetricRepository);
}
public static void main(String[] args) {
SpringApplication.run(SpringBootRichMetricsTestApplication.class, args);
}
}
从技术上讲,仅 InMemoryRichGaugeRepository bean 声明就可以解决问题,但该实现有效地禁用了 CounterService(将其替换为报告给 GaugeService 的任何计数),其中仅使用了 CounterService,因此我找到了这个解决方法来获取旧的CounterService行为回复。
我开发了一个 Spring 版本为 1.2 的启动应用程序。4.RELEASE 并且想使用 Actuator 测量一些指标数据。 我在 http://localhost:8080/metrics 获取了一些数据,但我希望在那里公开丰富的数据,例如我的请求的平均测量时间。
我发现 Actuator 插件中包含一个 RichGauge class,它可以满足我的需要,但它似乎没有被使用。我也无法在 google 上找到有关如何实现该目标的任何信息。
这是我的 pom.xml 的片段,其中包含 spring 依赖项:
<properties>
<spring.boot.version>1.2.4.RELEASE</spring.boot.version>
</properties>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>${spring.boot.version}</version>
</dependency>
如何使用执行器插件测量丰富的指标数据?是否有一些配置或我需要一些代码来实现它?
我成功搞定了运行下面的代码
@SpringBootApplication
public class SpringBootRichMetricsTestApplication {
private final InMemoryMetricRepository counterMetricRepository = new InMemoryMetricRepository();
@Bean
@Primary
public InMemoryRichGaugeRepository inMemoryRichGaugeRepository() {
return new InMemoryRichGaugeRepository();
}
@Bean
public CounterService counterService() {
return new DefaultCounterService(counterMetricRepository);
}
// bean must not be named metricReaderPublicMetrics, one with that name already exists and the other one silently wins
@Bean
public MetricReaderPublicMetrics counterMetricReaderPublicMetrics() {
return new MetricReaderPublicMetrics(counterMetricRepository);
}
public static void main(String[] args) {
SpringApplication.run(SpringBootRichMetricsTestApplication.class, args);
}
}
从技术上讲,仅 InMemoryRichGaugeRepository bean 声明就可以解决问题,但该实现有效地禁用了 CounterService(将其替换为报告给 GaugeService 的任何计数),其中仅使用了 CounterService,因此我找到了这个解决方法来获取旧的CounterService行为回复。