升级到Spring Boot 2后,如何将缓存指标公开给Prometheus?

我最近将Spring Boot应用程序从1.5升级到了2.0.1。我还使用千分尺将Prometheus集成迁移到了新的执行器方法。现在大多数事情都可以工作-

包括一些自定义计数器和量规。

我注意到新的Prometheus端点/actuator/prometheus不再发布Spring缓存指标(大小和命中率)。

我唯一能找到的就是这个问题及其相关的提交。

仍然无法在Prometheus导出上获取缓存指标。我尝试设置一些属性:

management.metrics.cache.instrument-cache=true

spring.cache.cache-names=cache1Name,cache2Name...

但是什么都没有。我可以看到Hazelcast高速缓存管理器正在启动,注册了高速缓存管理器bean等等,但是都/metrics没有/prometheus显示任何统计信息。使用@Cacheable注释填充缓存。这与Spring

Boot 1.5一起使用-我认为通过Hazelcast通过JMX公开了其指标,而prometheus出口商从那里获取了它吗?

现在不确定如何将其连接在一起。任何提示都欢迎!

回答:

您回答了我的问题后,我可以为您提供答案。

我的缓存是通过稍后的计划任务创建的

然后,文档的本部分适用于您:

只有启动时可用的缓存才绑定到注册表。对于在启动阶段后即时或以编程方式创建的缓存,需要显式注册。提供CacheMetricsRegistrar

Bean可简化该过程。

因此,您必须自己注册此类缓存,希望它非常简单,例如:

public class MyComponent {

private final CacheMetricsRegistrar cacheMetricsRegistrar;

private final CacheManager cacheManager

public MyComponent(CacheMetricsRegistrar cacheMetricsRegistrar,

CacheManager cacheManager) { ... }

public void register() {

// you have just registered cache "xyz"

Cache xyz = this.cacheManager.getCache("xyz");

this.cacheMetricsRegistrar.bindCacheToRegistry(xyz);

}

}

您可以将此代码包含在现有代码中。如果您不想这样做,那么您需要在现有代码之后运行一些其他操作,以将这些缓存注册到注册表中。

以上是 升级到Spring Boot 2后,如何将缓存指标公开给Prometheus? 的全部内容, 来源链接: utcz.com/qa/406514.html

回到顶部