spring Sping Boot 执行器仅暴露有限的端点

bq8i3lrv  于 2023-05-27  发布在  Spring
关注(0)|答案(1)|浏览(121)

我正在尝试在Sping Boot 2.3服务中公开其他执行器端点。正在尝试添加端点(如prometheus)和监控指标。但由于某种原因,公开的端点被锁定到默认的记录器、健康、信息。
对于一些背景,在org中,有一个父Spring依赖项,它自动带来所有Spring要素,以及org中有用的一些通用代码。我在许多其他项目中使用了这个依赖项,并且能够成功地公开这些附加的执行器端点。然而,在这个包含多个工件的项目中,我无法编辑默认的公开的执行器端点。
打印configurableEnvironment post init始终显示exposure属性,如下所示

management.endpoints.web.exposure.include = loggers,health,info

这是在尝试使用以下方法将此属性覆盖到扩展列表(loggers,health,info,Prometheus,metrics)之后:

  • 通过management.endpoint.metrics.enabled: true启用特定端点
  • 在application.yaml中指定这些值
  • 将其作为命令行参数Dmanagement.endpoints.web.exposure.include=loggers,health,info,prometheus,metrics传递
  • 使用mvn dependency:tree排除任何传递的执行器依赖性

我不相信这是由于org的父pom,可能是由于我们正在使用的另一个依赖关系。但是由于这个项目的规模,很难删除依赖项进行测试。有没有办法追踪到这些属性是在哪里设置的。或者是其他方法来强制暴露我想要的其他端点?

致动器配置

management:
  endpoints:
    web:
      exposure:
        include: metrics,prometheus,info,health,logging
  endpoint:
    env:
      enabled: true
    metrics:
      enabled: true
    info:
      enabled: true
    health:
      enabled: true
      show-details: always
    beans:
      enabled: true
    caches:
      enabled: true
    threaddump:
      enabled: true
    prometheus:
      enabled: true

执行器信息

{"_links":{"self":{"href":"http://localhost:9050/actuator","templated":false},"health":{"href":"http://localhost:9050/actuator/health","templated":false},"health-path":{"href":"http://localhost:9050/actuator/health/{*path}","templated":true},"info":{"href":"http://localhost:9050/actuator/info","templated":false},"loggers":{"href":"http://localhost:9050/actuator/loggers","templated":false},"loggers-name":{"href":"http://localhost:9050/actuator/loggers/{name}","templated":true}}}
ryevplcw

ryevplcw1#

你的问题缺乏一些背景,比如你的pom.xml或build.gradle文件和完整的application.yml配置。
我将通过基本步骤,你可能已经错过了。
首先,请确保您已经包含了Prometheus依赖项:

<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
  <scope>runtime</scope>
</dependency>

另外,不要忘记一些指标需要AOP依赖(例如custome计时器):

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

要启用Prometheus指标曝光,您应该在application.yml文件中指定这样的配置(看起来您做得很正确,但让我们在这里列出它以获得完整的图片):

management:
  endpoints:
    web.exposure.include: health, info, prometheus

要验证Prometheus端点是否已公开,请使用GET请求访问此URL:http://localhost:8080/actuator/prometheus
如果这些步骤不能帮助您解决问题,请在问题中添加更多详细信息。

相关问题