Prometheus Endpoint Not Working Spring Boot 2.0.0.RC1 Spring Webflux 已启用
Posted
技术标签:
【中文标题】Prometheus Endpoint Not Working Spring Boot 2.0.0.RC1 Spring Webflux 已启用【英文标题】:Prometheus Endpoint Not Working Spring Boot 2.0.0.RC1 Spring Webflux enabled 【发布时间】:2018-07-14 04:06:01 【问题描述】:我按照此处的文档 (https://docs.spring.io/spring-boot/docs/2.0.0.RC1/reference/htmlsingle/#production-ready-endpoints-enabling-endpoints) 并确保 application.yml 文件具有以下内容
management:
metrics:
export:
prometheus:
enabled: true
endpoints:
web:
expose:
health, info, httptrace, metrics, threaddump, mappings, prometheus
根据文档 (https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/actuator-api/html/#prometheus),以下内容不起作用。
curl 'http://localhost:8080/actuator/prometheus' -i
我得到 404 Handler mapping not found 异常。有人可以告诉我如何启用 prometheus 端点以进行抓取,以及我需要使用哪个 URL 端点来测试它吗?
o.s.w.r.r.m.a.RequestMappingHandlerMapping[276] - Did not find handler method for [/actuator/prometheus]
所有其他端点运行状况、信息、httptrace、threaddump、映射都运行良好。
【问题讨论】:
我也遇到了同样的问题。你解决了吗? 【参考方案1】:有点晚了——但只是为了记录——我可以验证它现在在 2.0.0.RELEASE 中有效。
依赖项(gradle):
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('io.micrometer:micrometer-registry-prometheus')
application.yaml (reference)
management:
endpoints:
web:
exposure:
include: health,info,prometheus
我还使用 RC1 进行了测试——prometheus 端点由于某种原因没有出现——正如@ROCKY 解释的那样。
【讨论】:
【参考方案2】:有些事情你可以检查:
您是否添加了必要的MeterRegistry
实现,以便存在Micrometer
仪器库的Prometheus“子系统”? (Micrometer 库从 Spring Boot 2.0 开始为 Actuator 实现提供支持)
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
如果没有特定的MeterRegistry
实现,您最终只会得到由SimpleMeterRegistry
实现支持的常规/actuator/metrics
端点。
您是否将上述属性放在application.[yml,yaml]
文件中,而不是application.properties
中? (我刚刚偶然发现了一个使用Spring Initializr 生成的新演示项目。)
【讨论】:
【参考方案3】:我遇到了同样的问题,并通过在配置中添加“include”标签来解决它:
管理: 指标: 出口: 普罗米修斯: 启用:真 端点: 网络: 接触: 包括:prometheus,info,metrics,threaddump【讨论】:
【参考方案4】:默认情况下,即使您的类路径中有>micrometer-registry-prometheus
,spring boot 也不会暴露 prometheus 端点。
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
您需要通过以下属性明确告诉 Spring Boot 公开 prometheus 端点。
management.endpoints.web.exposure.include=health,info,metrics,prometheus
【讨论】:
【参考方案5】:当我将应用程序从 1.5 升级到 2.1.3 时遇到了同样的问题。可以通过关注Spring Boot 2.0 Prometheus Backward Compatibility 来修复它
你需要 micrometer-registry-prometheus
在你的依赖列表中,并在下面添加到你的 SpringBootApplication 类
@Bean
public CollectorRegistry collectorRegistry()
return CollectorRegistry.defaultRegistry;
【讨论】:
以上是关于Prometheus Endpoint Not Working Spring Boot 2.0.0.RC1 Spring Webflux 已启用的主要内容,如果未能解决你的问题,请参考以下文章
Spring-Boot-Actuator Endpoint Prometheus 未正确显示
如何修复错误 Endpoint not found WCF REST POST
linux 挂载错误Transport endpoint is not connected
ERROR: publicURL endpoint for volumev service not found
(openstack)ERROR: publicURL endpoint for volumev service not found