我按照这里的文档(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映射未找到异常。有人可以让我知道如何启用prometheus端点进行抓取以及我需要使用哪个URL端点进行测试?
o.s.w.r.r.m.a.RequestMappingHandlerMapping[276] - Did not find handler method for [/actuator/prometheus]
所有其他端点health,info,httptrace,threaddump,mappings工作得非常好。
有点晚 - 但只是为了记录 - 我可以验证这现在在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解释的那样。
你可以检查一些事情:
MeterRegistry
实现,以便存在Micrometer
仪器库的Prometheus“子系统”? (从Spring Boot 2.0开始,Micrometer库为Actuator实现提供动力)
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
如果没有特定的MeterRegistry
实现,您最终会得到由/actuator/metrics
实现提供支持的常规SimpleMeterRegistry
端点。application.[yml,yaml]
文件而不是application.properties
? (我只是偶然发现了使用Spring Initializr生成的一个新的演示项目。)我遇到了同样的问题,并设法通过在配置中添加“include”标签来修复它:
management: metrics: export: prometheus: enabled: true endpoints: web: exposure: include: prometheus,info,metrics,threaddump
当我将我的应用程序从1.5升级到2.1.3时出现同样的问题。能够通过跟随这个Spring Boot 2.0 Prometheus Backward Compatibility解决它
您需要在依赖项列表中使用micrometer-registry-prometheus
,并在下面添加到SpringBootApplication类中
@Bean
public CollectorRegistry collectorRegistry() {
return CollectorRegistry.defaultRegistry;
}