本篇文章為大家展示了如何清理SpringBoot應用無用的metrics指標,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
在赤坎等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都做網站、成都網站設計、成都外貿網站建設 網站設計制作按需設計網站,公司網站建設,企業(yè)網站建設,品牌網站設計,成都全網營銷推廣,外貿營銷網站建設,赤坎網站建設費用合理。
上周有個網友問springboot程序的metrics越來越多了,有40W的指標,現(xiàn)在想清除一些沒用的metrics,要怎樣做呢?!
當時我看到這個問題覺得挺有意思,因為我的線上程序也有動態(tài)metrics,只不過指標沒有達到那么大的量,所以我研究了一下這個問題可以怎么樣處理.
動態(tài)創(chuàng)建metrics是直接用的io.micrometer.core.instrument.MeterRegistry
對象,例如:registry.gauge(name,tags,valueObject)
.就可以將一個name的gauge類型的metrics添加到registry里面了,收集metrics時就可以看到這個新增的metrics了.
于是看看這個對象還有什么刪除相關的方法:
首先嘗試的時delete
方法,發(fā)現(xiàn)沒有類似的方法:
然后試試remove
,可以發(fā)現(xiàn)有兩個remove方法可以用,分別傳入ID對象
和metrics對象
,但如果需要
全部清理呢?有沒有類似List的clear方法呢?
再試試clear
方法,發(fā)現(xiàn)是有這個方法的,并且我先測試了一遍,看看clear
方法是否能夠達到預期(清除metrics).
于是我一頓操作:
寫一個API接口,接口內容是執(zhí)行meterRegistry.clear();
啟動springboot程序
瀏覽器看看/actuator/prometheus
接口返回的內容
調用清理metrics的接口,也就是第一步寫的接口
再次瀏覽器看看/actuator/prometheus
接口返回的內容
清理metrics前的接口內容:
清理了metrics后的接口內容:
可以看到調用接口后metrics清除了信息.
方法有效?, 可以給網友回復了.
網友說沒這個方法? 咋回事?!
點進clear源碼看了一下,方法說明描述得很清楚,1.2.0版本發(fā)布的方法,而網友用的版本低于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
方法刪除就可以了.
當程序有動態(tài)新增metrics時就要考慮無用metrics清除的機制,如果metrics數(shù)量太多的話就會影響到業(yè)務應用.
上述內容就是如何清理SpringBoot應用無用的metrics指標,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。