我最近将Spring Boot应用程序从1.5升级到了2.0.1。我还使用千分尺将Prometheus集成迁移到了新的执行器方法。现在大多数事情都可以工作- 包括一些自定义计数器和量规。
我注意到新的Prometheus端点/actuator/prometheus不再发布Spring缓存指标(大小和命中率)。
/actuator/prometheus
我唯一能找到的就是这个问题及其相关的提交。
仍然无法在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出口商从那里获取了它吗?
/metrics
/prometheus
@Cacheable
现在不确定如何将其连接在一起。任何提示都欢迎!
您回答了我的问题后,我可以为您提供答案。
我的缓存是通过稍后的计划任务创建的
然后,文档的本部分适用于您:
只有启动时可用的缓存才绑定到注册表。对于在启动阶段后即时或以编程方式创建的缓存,需要显式注册。提供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); } }
您可以将此代码包含在现有代码中。如果您不想这样做,那么您需要在现有代码之后运行一些其他操作,以将这些缓存注册到注册表中。