【SpringCloud】Eureka监控页面 http://localhost:8001/actuator/info 无法显示

【There was an unexpected error (type=Not Found, status=404).No message available】

查遍了相关的博客都没有解决问题,最后在自己一步步追溯下找到了问题的根源,成功解决!

学习eureka时,我们可以通过配置info信息设置对应的信息
在服务提供者的YML文件中我配置了以下这段信息:

info:
  app.name: springcloud-service-news
  company.name: www.mark.com
  build.artifactId: @project.artifactId@
  build.version: @project.version@

并且导入了spring-boot-starter-actuator依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.5.5</version>
</dependency>

导入的依赖是最新version 2.5.5(可能是因为版本原因才导致以下的问题

并且也在父工程pom中导入了这段代码:

<build>
   <finalName>springcloud-news</finalName>
   <resources>
       <resource>
           <directory>src/main/resources</directory>
           <filtering>true</filtering>
       </resource>
   </resources>
   <plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-resources-plugin</artifactId>
       </plugin>
   </plugins>
</build>

eureka监控页面正常显示:
在这里插入图片描述

点击进入info界面,出现以下错误:

在这里插入图片描述
在检查了几遍代码之后,我排除了写错代码的可能;并且错误信息为No message available,所以很有可能是该页面被拦截。所以我尝试了一下http://localhost:8001/actuator/health,意外地发现可以正常显示:
在这里插入图片描述
在疯狂查阅网站上各种相关博客时,发现了官方对端点的启用和暴露也做了配置,但都说info和health两个端点是默认开启的,但是我的却只能显示health,不能显示info;于是我在YML配置中增加了端点的暴露设置:

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

更新配置后,health和info页面都能正常显示了
在这里插入图片描述
但是根据博客上的说法,info和health两个端点是默认开启的;我实践的结果却是只有health是默认开始的。那么产生冲突的原因是什么呢?我们接着分析:

我们查看springboot官方API文档
在这里插入图片描述
发现默认暴露的端点只有health,并没有info; 而在之前查阅的博客中也有官方API的截图, 暴露的端点是health和info两者;所以我们可以合理推测在actuator更新过程中, 对Exposure默认配置进行了更改

为了验证这个想法,我们查看源码:

首先我们搜索与Exposure相关的类
在这里插入图片描述
进入OnAvailableEndpointCondition类, 我们可以看到一个叫Exposure的内部类

在这里插入图片描述
我们可以看到一个叫DefaultIncludes的类, 中文意思就是默认包含, Ctrl+鼠标左键进入这个类的源码
在这里插入图片描述
我们可以看到Web只默认包含health, 因此验证成功

总结:

我导入的acutator依赖版本是2.5.5, 当时的最新版本, 由于版本更新速度非常迅速, 所以网上的博客都是更老的版本, 最后通过不断地Debug,并且对源码进行分析,终于成功解决这个问题.

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐