【SpringBootActuator】测试时发现Prometheus端点无法访问,返回404错误

我想做的事情

为了避免在Spring Boot的版本升级等情况下,意外删除了对”/prometheus”进行请求并检查HttpStatus是否为200的测试,我想要实施这个测试来避免这个错误。

請問有什麼問題嗎?

实际上应用程序启动后可以打开,但测试时却出现了404错误…
GET /info和GET /health都返回了200。

问题的代码

测试框架采用了Spock。

management:
  endpoints:
    web:
      base-path: /
      exposure:
        include: info, health, prometheus
@SpringBootTest
@AutoConfigureMockMvc
class PrometheusSpec extends Specification {
    @Autowired
    MockMvc mockMvc

    def "GET /prometheus"() {
        when:
        ResultActions actual = mockMvc.perform(MockMvcRequestBuilders
                .get("/prometheus"))
        then:
        actual.andReturn().getResponse().getStatus() == HttpStatus.OK.value()
    }
}

执行结果 (Shí

actual.andReturn().getResponse().getStatus() == HttpStatus.OK.value()
|      |           |             |           |  |          |  |
|      |           |             404         |  |          |  200

解决方案 (jiě jué àn)

通过在类上添加 @AutoConfigureMetrics 可以解决这个问题。

如果在不考虑类路径的情况下使用 @SpringBootTest,除了那些在内存中备份的内容之外,度量注册表不会自动配置。

如果需要将指标作为集成测试的一部分导出到另一个后端,则可以在 @AutoConfigureMetrics 上添加注解。

最后的话

阅读文件很重要。

广告
将在 10 秒后关闭
bannerAds