【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 上添加注解。
最后的话
阅读文件很重要。