升级到Spring Boot 2后,如何将缓存指标公开给Prometheus?
我最近将Spring Boot应用程序从1.5升级到了2.0.1。我还使用千分尺将Prometheus集成迁移到了新的执行器方法。现在大多数事情都可以工作-
包括一些自定义计数器和量规。
我注意到新的Prometheus端点/actuator/prometheus
不再发布Spring缓存指标(大小和命中率)。
我唯一能找到的就是这个问题及其相关的提交。
仍然无法在Prometheus导出上获取缓存指标。我尝试设置一些属性:
management.metrics.cache.instrument-cache=truespring.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