Springboot with micrometer/prometheus:在运行时禁用和启用某些特定指标

问题描述

我们知道可以使用属性在每米的基础上启用/禁用微米度量,特别是设置 management.metrics.enable.=true/false,但我们需要更动态的东西(无需部署和重新启动springboot 应用程序。我们需要通过读取在外部数据库上设置的值来动态启用/禁用某些指标(例如,具有指标名称列的表和作为“启用/禁用”),例如每分钟轮询一次该表。 所以我们想象的场景是一个外部表,有人可以更新记录,将某个指标的名称设置为“启用”或“禁用”,我们的 SpringBoot 模块会不断更新该表,从而启用/禁用相应的指标。 在您看来,这可能吗,以防万一,用于这种情况的最佳方法是什么?

我尝试使用如下所示的微米表过滤器,但是,如其他一些帖子中所述,它们会永久工作,因此在拒绝调用后,该指标将永远禁用:

meters.config().meterFilter(MeterFilter.denyNameStartsWith(metricName));

附注: 我还阅读了有关 spring cloud (config server) 的有关可以在运行时刷新的属性的外部化的信息,这可能不是正确的解决方案,无论如何我试图探索它,但它不适用于 springboot 属性,它仅适用于自定义属性在外部属性文件上。因此,如果我尝试使用 management.metrics.enable.mymetricname=false 覆盖 management.metrics.enable.mymetricname=true 之类的属性,反之亦然,并在 http /refresh 后使用 curl 检查 prometheus 端点,有时它会起作用,对应指标启用或禁用,有时不启用。

预先感谢您的每一个支持或建议。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)