溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)

發(fā)布時(shí)間:2021-09-29 14:36:45 來源:億速云 閱讀:245 作者:柒染 欄目:云計(jì)算

本篇文章為大家展示了如何清理SpringBoot應(yīng)用無用的metrics指標(biāo),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

 

前言

上周有個(gè)網(wǎng)友問springboot程序的metrics越來越多了,有40W的指標(biāo),現(xiàn)在想清除一些沒用的metrics,要怎樣做呢?!

當(dāng)時(shí)我看到這個(gè)問題覺得挺有意思,因?yàn)槲业木€上程序也有動(dòng)態(tài)metrics,只不過指標(biāo)沒有達(dá)到那么大的量,所以我研究了一下這個(gè)問題可以怎么樣處理.

 

用什么添加做的動(dòng)態(tài)metrics就先看支不支持刪除

動(dòng)態(tài)創(chuàng)建metrics是直接用的io.micrometer.core.instrument.MeterRegistry對(duì)象,例如:registry.gauge(name,tags,valueObject).就可以將一個(gè)name的gauge類型的metrics添加到registry里面了,收集metrics時(shí)就可以看到這個(gè)新增的metrics了.

于是看看這個(gè)對(duì)象還有什么刪除相關(guān)的方法:

首先嘗試的時(shí)delete方法,發(fā)現(xiàn)沒有類似的方法:  

如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)  
metrics-try-delete-method

然后試試remove,可以發(fā)現(xiàn)有兩個(gè)remove方法可以用,分別傳入ID對(duì)象metrics對(duì)象,但如果需要


如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)

全部清理呢?有沒有類似List的clear方法呢?

如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)

metrics-try-remove-method


再試試clear方法,發(fā)現(xiàn)是有這個(gè)方法的,并且我先測(cè)試了一遍,看看clear方法是否能夠達(dá)到預(yù)期(清除metrics).

如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)

metrics-try-clear-method
 

實(shí)操測(cè)試

于是我一頓操作:

  1. 寫一個(gè)API接口,接口內(nèi)容是執(zhí)行meterRegistry.clear();

  2. 啟動(dòng)springboot程序  

  3. 瀏覽器看看/actuator/prometheus接口返回的內(nèi)容

  4. 調(diào)用清理metrics的接口,也就是第一步寫的接口  

  5. 再次瀏覽器看看/actuator/prometheus接口返回的內(nèi)容

清理metrics前的接口內(nèi)容:  

如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)

clear-metrics-before

清理了metrics后的接口內(nèi)容:

如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)

clear-metrics-after


可以看到調(diào)用接口后metrics清除了信息.

方法有效?, 可以給網(wǎng)友回復(fù)了.

 

網(wǎng)友實(shí)操不行

如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)

clear-method-for-metrics


網(wǎng)友說沒這個(gè)方法? 咋回事?!

點(diǎn)進(jìn)clear源碼看了一下,方法說明描述得很清楚,1.2.0版本發(fā)布的方法,而網(wǎng)友用的版本低于1.2.0,因此沒有這個(gè)方法.

/**
     * Clear all meters.
     * @since 1.2.0
     */
    @Incubating(since = "1.2.0")
    public void clear() {
        meterMap.keySet().forEach(this::remove);
    }
   

能不能根據(jù)根據(jù)某些標(biāo)簽來刪除特定的metrics

如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)  
clear-metrics-from-tags

當(dāng)然可以!

如何清理SpringBoot應(yīng)用無用的metrics指標(biāo)metrics-registry-find-tags.png


可以看到每一個(gè)metrics的tag列表都可以拿得到,那就好辦了,通過標(biāo)簽對(duì)比篩選出自己想要?jiǎng)h除的metrics,然后用remove方法刪除就可以了.

當(dāng)程序有動(dòng)態(tài)新增metrics時(shí)就要考慮無用metrics清除的機(jī)制,如果metrics數(shù)量太多的話就會(huì)影響到業(yè)務(wù)應(yīng)用.

上述內(nèi)容就是如何清理SpringBoot應(yīng)用無用的metrics指標(biāo),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI