Prometheus端点无法正常工作Spring Boot 2.0.0.RC1 Spring Webflux已启用

时间:2018-02-03 23:49:53

标签: spring spring-boot spring-boot-actuator spring-webflux

我按照此处的文档(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工作正常。

5 个答案:

答案 0 :(得分:4)

你可以检查一些事情:

  1. 您是否添加了必要的MeterRegistry实施,以便Micrometer检测库的Prometheus“子系统”存在? (Micrometer库正在为Spring Boot 2.0中的Actuator实现提供动力)

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

    如果没有特定的MeterRegistry实施,您最终会得到/actuator/metrics实施提供支持的常规SimpleMeterRegistry端点。

  2. 您是否实际将所提及的属性放在application.[yml,yaml]文件中而不是application.properties? (我只是偶然发现了使用Spring Initializr生成的新演示项目。)

答案 1 :(得分:3)

我遇到了同样的问题,并设法通过在配置中添加“include”标记来修复它:

management:
  metrics:
    export:
      prometheus:
        enabled: true
  endpoints:
    web:
      exposure:
        include: prometheus,info,metrics,threaddump

答案 2 :(得分:3)

有点晚 - 但只是为了记录 - 我可以验证它现在在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解释的那样。

答案 3 :(得分:2)

即使您的类路径中有>micrometer-registry-prometheus,默认情况下Spring Boot也不会公开Prometheus端点。

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

您需要通过以下属性来明确告诉Spring Boot公开Prometheus端点。

management.endpoints.web.exposure.include=health,info,metrics,prometheus

答案 4 :(得分:0)

当我将应用程序从1.5升级到2.1.3时遇到了同样的问题。可以通过遵循以下Spring Boot 2.0 Prometheus Backward Compatibility

进行修复

您需要在依赖项列表中添加implementation并将其添加到SpringBootApplication类中

micrometer-registry-prometheus