【问题标题】:Spring-Boot-Actuator Endpoint Prometheus not shown correctlySpring-Boot-Actuator Endpoint Prometheus 未正确显示
【发布时间】: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 你能提供一个示例配置吗?会很有帮助=)

标签: spring spring-boot prometheus spring-boot-actuator micrometer


【解决方案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-actuatorio.micrometer:micrometer-registry-prometheus,没有版本,版本应该来自BOM。 Spring Boot 自动配置必须为您创建一个 PrometheusMeterRegistry(在组合中注册)。如果没有,请为 Spring Boot 创建一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 2020-06-01
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 2019-09-06
  • 2018-07-14
相关资源
最近更新 更多