【发布时间】:2018-09-16 17:37:09
【问题描述】:
我最近将一个 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 导出器从那里获取它?
现在不确定如何将它们连接在一起。欢迎任何提示!
【问题讨论】:
-
你有read the dedicated section of the documentation吗?如果您使用 Hazelcast,则设置缓存名称是错误的,因为该属性的目的是为您创建缓存。如果你有一个最小的样本可以重现我可以自己运行的问题,我很乐意看看它。
-
您好,感谢您的回复!是的,看到了该部分,但我无法理解 CacheMetricsRegistrarConfiguration 在什么时候运行(我很早就假设),但我的缓存稍后是通过计划任务创建的,因此方法 bindCacheManagerToRegistry 看不到任何缓存。设置属性“spring.cache.cache-names”只是一个绝望的实验。我将尝试剥离应用程序来证明这一点。
-
不需要,您的案例已经在文档中有明确的部分。我已经添加了答案。
-
我担心这就是答案。我认为缓存必须更早地知道,并且它的名称以“缓存”开头 - 我创建了精简版:github.com/wemu/mobitor-parent-cache-example/blob/… - 但我不知道为什么。注册可以移动到 CacheManagerWrapper 或类似的东西吗?还是会导致其他影响?我的缓存实际上是插件的一部分,目前我没有它们的完整列表。
标签: spring-boot hazelcast prometheus spring-boot-actuator spring-cache