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