通过Prometheus利用自定义指标micrometer的MeterRegistry暴露HttpClient连接池中连接数占用状态

本文介绍了如何通过Prometheus和自定义metrics监控HttpClient连接池中的连接数,利用PoolingHttpClientConnectionManager的getTotalStats()方法获取连接状态,并将数据绑定到MeterRegistry,确保数据持久化。通过Spring注入MeterRegistry,最终在/actuator/prometheus端点显示连接池数据,并在Grafana中展示实时监控图表。
摘要由CSDN通过智能技术生成

在服务内部调用外部接口的时候,使用的RestTemplate对请求调用进行了封装,默认情况下Spring使用的是java.net.HttpURLConnection。但是为了更高效,为RestTemplate使用工厂创建ClientHttpRequest, 这样就可以使用HttpClient并利用它的连接池特性,通过创建PoolingHttpClientConnectionManager来管理httpClient的连接池,并可以为单独的Route设置最大连接数setDefaultMaxPerRoute,但是连接池的使用过程中,无法监控到连接池中的连接数量,也就是服务再使用httpClient调用外部接口的时候无法查看池中有多少连接正在使用,多少连接正在准备好等待获取,多少连接已经可用,所以就想到利用Prometheus的自定义metrics来监控到连接池中的连接情况,并展示到grafana监控中,现在包括,hikari光数据源也都是采用了prometheus的端点监控来实现对数据库连接池数据的展示,就像这样

所以如何实现呢,首先要提前准备实现的条件,监控数据,poolingHttpClientConnectionManager里面提供了getTotalStats()方法,这个方法中从Pool里可以获

在 Spring Boot 2.6 ,你可以使用 `micrometer` 库来集成 Prometheus,并自定义指标。 首先,确保在项目的依赖包含 `micrometer-registry-prometheus`: ```xml <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>版本号</version> </dependency> ``` 接下来,在你的 Spring Boot 应用程序的配置类,添加以下代码以启用 Prometheus 的监控: ```java import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.prometheus.PrometheusMeterRegistry; @Configuration public class PrometheusConfig { @Bean public MeterRegistryCustomizer<PrometheusMeterRegistry> prometheusCustomizer() { return registry -> { // 在这里可以自定义 Prometheus 的配置 }; } } ``` 在 `prometheusCustomizer` 方法,你可以添加自定义的配置,例如添加标签、修改指标名称等。 接下来,你可以在代码创建自定义指标并将其注册到 Micrometer 。以下是一个示例: ```java import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.Metrics; public class MyCustomMetrics { private static final Counter myCounter = Metrics.counter("my_custom_counter"); public static void increaseCounter() { myCounter.increment(); } } ``` 在上述示例,我们创建了一个名为 `my_custom_counter` 的 Counter 指标,并使用 `increment()` 方法增加其值。 最后,你可以通过访问 `/actuator/prometheus` 端点来获取 Prometheus 格式的监控指标。默认情况下,Spring Boot 会自动将 Micrometer 指标暴露到 `/actuator/prometheus` 端点。 请注意,这只是一个简单的示例,你可以根据需要创建和注册更多的自定义指标。同时,你也可以参考 MicrometerPrometheus 的文档以了解更多配置和使用细节。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值