您好,登录后才能下订单哦!
本篇文章为大家展示了如何清理SpringBoot应用无用的metrics指标,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
上周有个网友问springboot程序的metrics越来越多了,有40W的指标,现在想清除一些没用的metrics,要怎样做呢?!
当时我看到这个问题觉得挺有意思,因为我的线上程序也有动态metrics,只不过指标没有达到那么大的量,所以我研究了一下这个问题可以怎么样处理.
动态创建metrics是直接用的io.micrometer.core.instrument.MeterRegistry
对象,例如:registry.gauge(name,tags,valueObject)
.就可以将一个name的gauge类型的metrics添加到registry里面了,收集metrics时就可以看到这个新增的metrics了.
于是看看这个对象还有什么删除相关的方法:
首先尝试的时delete
方法,发现没有类似的方法:
然后试试remove
,可以发现有两个remove方法可以用,分别传入ID对象
和metrics对象
,但如果需要
全部清理呢?有没有类似List的clear方法呢?
再试试clear
方法,发现是有这个方法的,并且我先测试了一遍,看看clear
方法是否能够达到预期(清除metrics).
于是我一顿操作:
写一个API接口,接口内容是执行meterRegistry.clear();
启动springboot程序
浏览器看看/actuator/prometheus
接口返回的内容
调用清理metrics的接口,也就是第一步写的接口
再次浏览器看看/actuator/prometheus
接口返回的内容
清理metrics前的接口内容:
清理了metrics后的接口内容:
可以看到调用接口后metrics清除了信息.
方法有效✔, 可以给网友回复了.
网友说没这个方法? 咋回事?!
点进clear源码看了一下,方法说明描述得很清楚,1.2.0版本发布的方法,而网友用的版本低于1.2.0,因此没有这个方法.
/**
* Clear all meters.
* @since 1.2.0
*/
@Incubating(since = "1.2.0")
public void clear() {
meterMap.keySet().forEach(this::remove);
}
当然可以!
metrics-registry-find-tags.png
可以看到每一个metrics的tag列表都可以拿得到,那就好办了,通过标签对比筛选出自己想要删除的metrics,然后用remove
方法删除就可以了.
当程序有动态新增metrics时就要考虑无用metrics清除的机制,如果metrics数量太多的话就会影响到业务应用.
上述内容就是如何清理SpringBoot应用无用的metrics指标,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。