Prometheus Endpoint Not Working Spring Boot 2.0.0.RC1 Spring Webflux 已启用

Posted

技术标签:

【中文标题】Prometheus Endpoint Not Working Spring Boot 2.0.0.RC1 Spring Webflux 已启用【英文标题】:Prometheus Endpoint Not Working Spring Boot 2.0.0.RC1 Spring Webflux enabled 【发布时间】:2018-07-14 04:06:01 【问题描述】:

我按照此处的文档 (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 mapping not found 异常。有人可以告诉我如何启用 prometheus 端点以进行抓取,以及我需要使用哪个 URL 端点来测试它吗?

o.s.w.r.r.m.a.RequestMappingHandlerMapping[276] - Did not find handler method for [/actuator/prometheus]

所有其他端点运行状况、信息、httptrace、threaddump、映射都运行良好。

【问题讨论】:

我也遇到了同样的问题。你解决了吗? 【参考方案1】:

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

【讨论】:

【参考方案2】:

有些事情你可以检查:

    您是否添加了必要的MeterRegistry 实现,以便存在Micrometer 仪器库的Prometheus“子系统”? (Micrometer 库从 Spring Boot 2.0 开始为 Actuator 实现提供支持)

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

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

    您是否将上述属性放在application.[yml,yaml] 文件中,而不是application.properties 中? (我刚刚偶然发现了一个使用Spring Initializr 生成的新演示项目。)

【讨论】:

【参考方案3】:

我遇到了同样的问题,并通过在配置中添加“include”标签来解决它:

管理: 指标: 出口: 普罗米修斯: 启用:真 端点: 网络: 接触: 包括:prometheus,info,metrics,threaddump

【讨论】:

【参考方案4】:

默认情况下,即使您的类路径中有&gt;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

【讨论】:

【参考方案5】:

当我将应用程序从 1.5 升级到 2.1.3 时遇到了同样的问题。可以通过关注Spring Boot 2.0 Prometheus Backward Compatibility 来修复它

你需要 micrometer-registry-prometheus 在你的依赖列表中,并在下面添加到你的 SpringBootApplication 类

@Bean
public CollectorRegistry collectorRegistry() 
    return CollectorRegistry.defaultRegistry;

【讨论】:

以上是关于Prometheus Endpoint Not Working Spring Boot 2.0.0.RC1 Spring Webflux 已启用的主要内容,如果未能解决你的问题,请参考以下文章

Spring-Boot-Actuator Endpoint Prometheus 未正确显示

如何修复错误 Endpoint not found WCF REST POST

linux 挂载错误Transport endpoint is not connected

ERROR: publicURL endpoint for volumev service not found

(openstack)ERROR: publicURL endpoint for volumev service not found

Socket编程时recv函数错误:Transport endpoint is not connected的解决