不能在 Spring Boot 2(版本 2.0.0.M7)中包含 Prometheus 指标
Posted
技术标签:
【中文标题】不能在 Spring Boot 2(版本 2.0.0.M7)中包含 Prometheus 指标【英文标题】:Cannot include Prometheus metrics in spring boot 2 (version 2.0.0.M7) 【发布时间】:2018-07-19 21:44:58 【问题描述】:不能在 spring boot 2(版本 2.0.0.M7)项目中包含 Prometheus 指标。
根据micrometer docs 添加 spring-boot-starter-actuator 依赖并在 application.yaml 添加 management.endpoints.web.expose: prometheus 但在调用 /actuator/prometheus 获取
"timestamp": 1518159066052,
"path": "/actuator/prometheus",
"message": "Response status 404 with reason \"No matching handler\"",
"status": 404,
"error": "Not Found"
请告诉我为什么我没有获得普罗米修斯指标?
【问题讨论】:
【参考方案1】:我在使用 Springboot 2.x 启动千分尺时遇到了问题。
我项目中的这些更改帮助我在actuator/prometheus
端点公开指标
这些是我的 application.properties 文件中的更改
management.endpoints.web.exposure.include=*
management.endpoint.metrics.enabled=true
包含我的 build.gradle 文件
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('io.micrometer:micrometer-registry-prometheus')
【讨论】:
【参考方案2】:编辑:自从我给出这个答案以来,发生了很多变化。它对 2.0.0.RC1 有效。请阅读文档https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html
如果上述解决方案对某人不起作用,请尝试以下操作: 我对 Spring Boot 2.0.0.RC1、spring-boot-starter-web 和 spring-boot-starter-actuator 也有同样的问题。
我的 application.properties 文件读取:
management.endpoints.web.expose=prometheus,metrics,info,health
在我的 pom 文件中我还有:
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>0.12.0.RELEASE</version>
</dependency>
/actuator/prometheus 下的 Prometheus 指标仅在我切换到最新版本的 micrometer-registry-prometheus 后显示:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.0.0-rc.9</version>
</dependency>
【讨论】:
我认为属性management.endpoints.web.expose
应该是 management.endpoints.web.exposure.include
与 Spring Boot 2.0.0.RELEASE,不是吗?同时还发布了micrometer-registry-prometheus
,在撰写本文时为1.0.1
。
DerMiggel - 我认为你是对的。 @cholland 你能修改你的答案吗?我有一个错误的开始。【参考方案3】:
您是否将micrometer-registry-prometheus
添加到您的依赖项中?
Micrometer 具有可插入的架构,您需要在其中定义(通过插入依赖项)您想要使用的监控系统。 (您甚至可以添加多个,而不仅仅是一个。)
顺便说一句,您应该切换到 Spring Boot 2.0.0.RC1
。这是撰写本文时的当前版本。
【讨论】:
是的,我添加了micrometer-registry-prometheus
依赖项,但它并没有解决我的问题。在文档中找到 endpoints.prometheus.id: micrometheus
,但在 application.yaml 中我没有得到它。
@makson 您使用的是什么“网络”技术?当我使用spring-boot-starter-web
进行测试时,它可以使用2.0.0.M7
以及2.0.0.RC1
。但是当我用spring-boot-starter-jersey
测试时,会吐出404。执行器端点未注册。您需要将 ResourceConfig
Bean 添加/注册到您的上下文中,以便 JerseyAutoConfiguration
启动。
我正在使用RouterFunctions
和spring-boot-starter-webflux
。将 spring 更新为2.0.0.RC1
后,所有工作。谢谢。以上是关于不能在 Spring Boot 2(版本 2.0.0.M7)中包含 Prometheus 指标的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 版本从 1.5.8 更改为 2.0.0
升级到 Spring Boot 版本 2 后 Prometheus 无法正常工作
spring boot 2.0.0由于版本不匹配导致的NoSuchMethodError问题解析