springboot 2.x集成prometheus

一、遇到的坑

本人在使用springboot2.0.6版本集成prometheus时,如果直接导入


   io.micrometer
   micrometer-registry-prometheus

启动时,就会直接报错。

Caused by: java.lang.NoClassDefFoundError: io/prometheus/client/CollectorRegistry
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_60]
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_60]
    at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_60]
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:641) ~[spring-core-5.0.10.RELEASE.jar:5.0.10.RELEASE]
    ... 20 common frames omitted
Caused by: java.lang.ClassNotFoundException: io.prometheus.client.CollectorRegistry
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_60]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_60]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_60]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_60]
    ... 24 common frames omitted

试着使用springboot1.x集成prometheus的方式,还是不行。
后来直接查看springboot2.1.x版本的所依赖的jar包及版本,直接拿过来springboot2.0.6版本中,发现可以使用。具体解决方式如下所示。

二、如何解决

1、在pom中加入依赖包

1.1、基于springboot 2.0.x版本


   org.springframework.boot
   spring-boot-starter-actuator
   
      
         io.micrometer
         micrometer-core
      
   



   io.micrometer
   micrometer-core
   1.1.0



   io.micrometer
   micrometer-registry-prometheus
   1.1.0
   
      
         io.micrometer
         micrometer-core
      
   

1.2、基于springboot 2.1.x 及以上版本


   io.micrometer
   micrometer-registry-prometheus

2、放开端点访问

management:
  endpoints:
    web:
      exposure:
        include: "*"

3、验证

打开浏览器,访问 http://ip:port/actuator/prometheus

三、其他

其实springboot-2.0.6.RELEASE reference 文档 文档中,对应的micrometer-registry-prometheus版本是1.0.7,但是为啥不行,还没有找到原因。

你可能感兴趣的:(springboot 2.x集成prometheus)