Spring-Boot-Actuator Endpoint Prometheus 未正确显示
Posted
技术标签:
【中文标题】Spring-Boot-Actuator Endpoint Prometheus 未正确显示【英文标题】:Spring-Boot-Actuator Endpoint Prometheus not shown correctly 【发布时间】:2022-01-06 05:33:06 【问题描述】:我想展示一些使用千分尺 prometheus 和 spring-boot-actuator 的指标。我的项目完全基于 spring-boot 并启用了执行器功能并映射到以下 url:http://localhost:9000/actuator 其他端点显示正确,但 http://localhost:9000/actuator/prometheus 没有。您可以在下面找到我在访问此 http-endpoint 时获得的屏幕截图。
有人可以帮我吗?为什么会发生这种情况,我该如何解决? 原因通常当您提供合适的依赖项时,prometheus 会自动为 spring-boot-actuator 配置。
【问题讨论】:
尝试使用--debug
标志(或-Ddebug
)运行您的应用程序。从给定的信息来看,似乎一些自动配置没有完成。启用调试会告诉您确切的原因(缺少依赖项、错误配置的属性等)。
感谢您的回复,但它没有注销任何有用的东西,只是启动应用程序时的正常内容,还有其他想法吗?
你能用 prometheus 的配置更新你的问题吗?确保 metrics_path 配置正确,例如 metrics_path: '/actuator/prometheus'
prometheus 配置?这是必要的吗?因为我认为默认配置了 /actuator/prometheus 你能提供一个示例配置吗?会很有帮助=)
【参考方案1】:
这是默认自动配置的,这里有一些故障排除提示:
检查是否添加了micrometer-registry-prometheus
(不定义版本,版本应该来自BOM)
检查执行器端点是否启用:management.endpoints.web.exposure.include=*
检查是否有控制器映射 prometheus 端点的路径或其任何子路径(/
、/actuator
、/actuator/prometheus
)
检查你的浏览器是否欺骗了你curl localhost:9090/actuator/prometheus
【讨论】:
这里映射的唯一路径是应用程序到 / 的上下文路径,但它不会影响其他有趣的端点是 /metrics 端点显示所有指标但不显示它们的值可能有2个问题之间的关系?但我想不出为什么【参考方案2】:好的,我用解决方案解决了它:
我手动创建了一个 prometheusMeterRegistry 类型的 bean,因此 spring boot 没有自动配置它,导致 prometheus 端点没有提供任何指标 有关详细信息,请参见下面的代码 sn-p:
// @Bean
// public PrometheusMeterRegistry prometheusMeterRegistry()
// return new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
//
【讨论】:
fyi:这只是隐藏真正的问题,Spring Boot 自动配置这个,检查你是否有 spring-boot-actuator 并且版本匹配。 您指的是哪个版本?所有 spring boot 版本都经过检查和一致,刚刚更新到 spring-boot 2.6 并为此使用了匹配版本的 prometheus 你需要添加org.springframework.boot:spring-boot-starter-actuator
和io.micrometer:micrometer-registry-prometheus
,没有版本,版本应该来自BOM。 Spring Boot 自动配置必须为您创建一个 PrometheusMeterRegistry(在组合中注册)。如果没有,请为 Spring Boot 创建一个问题。以上是关于Spring-Boot-Actuator Endpoint Prometheus 未正确显示的主要内容,如果未能解决你的问题,请参考以下文章
63 USB复合设备多设备数据乱码问题及ENDP0_RXADDR起始地址计算方式
63 USB复合设备多设备数据乱码问题及ENDP0_RXADDR起始地址计算方式