Spring Boot 2.0 Prometheus向后兼容性

Hub*_*zer 6 spring spring-boot spring-boot-actuator prometheus micrometer

我正在迁移到Spring Boot 2.0,我的Prometheus Metrics存在问题.

我知道MicroMeter是一种新的做事方式,它不像Prometheus libs那样清脆,但还可以.

我的问题是,如果我现在不想更改我的指标,我就无法升级到Spring Boot 2.0.我对吗?

我尝试了以下方法:

试验1号

  • 保持我的实现"按原样"
  • 将新依赖项添加io.micrometer:micrometer-registry-prometheus:1.0.2到我的应用程序(执行器已经在那里)
  • 更改内容application.properties以访问端点actuator/prometheus

=>我CountersGauges过去被忽略了.好的,从技术角度来看,我理解这一点.

试验2

  • 保持我的实现"按原样"
  • 添加"旧"'io.prometheus'依赖项并删除千分尺依赖项
  • 更改内容application.properties以访问端点actuator/prometheus

=>现在我得到以下的重复

Caused by: java.lang.ClassNotFoundException: org.springframework.boot.actuate.endpoint.AbstractEndpoint
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_161]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_161]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) ~[na:1.8.0_161]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_161]
... 37 common frames omitted
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:是否有"软迁移"方式有效?

che*_*tts 5

要使Trial no 1起作用,只需将 Prometheus 默认注册表添加为 Micrometer 能够利用的 bean。

@Bean
public CollectorRegistry collectorRegistry() {
    return CollectorRegistry.defaultRegistry;
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,Micrometer 不使用默认注册表,因为它不允许取消注册仪表并且会使单元测试变得非常困难。

要使Trial no 2工作需要重新实现 prometheus 执行器端点,因为该类在 SpringBoot 2 中发生了巨大变化。我不推荐这种方法。