我正在迁移到Spring Boot 2.0,但Prometheus指标存在问题。

我知道MicroMeter是一种新的做事方式,不像Prometheus库那么清晰,但是还可以。

我的问题是,如果现在不想更改指标,则无法升级到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




所以我的问题是:是否有一种“软迁移”方式有效?

最佳答案

要使No.1试用版正常工作,只需将Prometheus默认注册表添加为Micrometer可以利用的bean。

@Bean
public CollectorRegistry collectorRegistry() {
    return CollectorRegistry.defaultRegistry;
}


千分尺默认情况下不使用默认注册表,因为它不允许取消对仪表的注册,并且可能使单元测试相当困难。

要使No 2的试用工作正常进行,将需要重新实现Prometheus执行器端点,因为该类在SpringBoot 2中发生了巨大变化。我不推荐这种方法。

09-16 05:36