www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]micrometer 中自帶了很多其他框架的指標(biāo)信息,可以很方便的通過(guò) prometheus 進(jìn)行采集和監(jiān)控,常用的有 JVM 的信息,Http 請(qǐng)求的信息,Tomcat 線程的信息等。

前言

micrometer 中自帶了很多其他框架的指標(biāo)信息,可以很方便的通過(guò) prometheus 進(jìn)行采集和監(jiān)控,常用的有 JVM 的信息,Http 請(qǐng)求的信息,Tomcat 線程的信息等。

對(duì)于一些比較活躍的框架,有些還是不支持的,比如 Dubbo。如果想監(jiān)控 Dubbo 的一些指標(biāo),比如線程池的狀況,我們需要手動(dòng)去擴(kuò)展,輸出對(duì)應(yīng)的線程池指標(biāo)才行。

在這種情況下,肯定是沒(méi)什么思路的,因?yàn)槟悴恢涝趺慈U(kuò)展,下面給大家介紹去做一件事情之前的思考,方式方法很重要。

  • Dubbo 有沒(méi)有現(xiàn)成的實(shí)現(xiàn)?
  • 參考 micrometer 中指標(biāo)的實(shí)現(xiàn),依葫蘆畫(huà)瓢?

Dubbo 有沒(méi)有現(xiàn)成的實(shí)現(xiàn)?

完整的實(shí)現(xiàn)應(yīng)該沒(méi)有,至少我還沒(méi)用過(guò),也沒(méi)有那種去搜索引擎一搜就大把結(jié)果的現(xiàn)狀,于是我在 Dubbo 的 Github 上找到了一個(gè)相關(guān)的項(xiàng)目 dubbo-spring-boot-actuator。

https://github.com/apache/dubbo-spring-boot-project/tree/master/dubbo-spring-boot-actuator

dubbo-spring-boot-actuator 看名稱(chēng)就知道,提供了 Dubbo 相關(guān)的各種信息端點(diǎn)和健康檢查。從這里面也許能發(fā)現(xiàn)點(diǎn)有用的代碼。

果不其然,在介紹頁(yè)面中看到了想要的內(nèi)容,線程池的指標(biāo)數(shù)據(jù),只不過(guò)是拼接成了字符串顯示而已。

"threadpool": {
      "source": "management.health.dubbo.status.extras",
      "status": {
        "level": "OK",
        "message": "Pool status:OK, max:200, core:200, largest:0, active:0, task:0, service port: 12345",
        "description": null
      }
}

然后就去翻 dubbo-spring-boot-actuator 的代碼了,沒(méi)找到線程池這塊的代碼。后面在 dubbo.jar 中找到了 ThreadPoolStatusChecker 這個(gè)類(lèi),核心邏輯在這里面。現(xiàn)在已經(jīng)解決了第一個(gè)問(wèn)題,就是獲取到 Dubbo 的線程池對(duì)象。


用了很多年Dubbo,連Dubbo線程池監(jiān)控都不知道,覺(jué)得自己很厲害?

參考 micrometer 中指標(biāo)的實(shí)現(xiàn),依葫蘆畫(huà)瓢?

線程池對(duì)象能拿到了,各種數(shù)據(jù)也就能獲取了。接下來(lái)的問(wèn)題就是如何暴露出去給 prometheus 采集。

兩種方式,一種是自定義一個(gè)新的端點(diǎn)暴露,一種是直接在已有的 prometheus 端點(diǎn)中增加指標(biāo)數(shù)據(jù)的輸出,也就是依葫蘆畫(huà)瓢。

看源碼中已經(jīng)有很多 Metrics 的實(shí)現(xiàn)了,我們也實(shí)現(xiàn)一個(gè) Dubbo 線程池的 Metrics 即可。

用了很多年Dubbo,連Dubbo線程池監(jiān)控都不知道,覺(jué)得自己很厲害?

上圖框起來(lái)的就是一個(gè)已經(jīng)存在的線程池 Metrics,可以直接復(fù)用代碼。

實(shí)現(xiàn)的主要邏輯就是實(shí)現(xiàn)一個(gè) MeterBinder 接口,然后將你需要的指標(biāo)進(jìn)行輸出即可。于是打算在 bindTo 方法中獲取 Dubbo 的線程池對(duì)象,然后輸出指標(biāo)。經(jīng)過(guò)測(cè)試,在 MeterBinder 實(shí)例化的時(shí)候 Dubbo 還沒(méi)初始化好,拿不到線程池對(duì)象,綁定后無(wú)法成功輸出指標(biāo)。

后面還是打算采用定時(shí)采樣的方式來(lái)輸出,自定義一個(gè)后臺(tái)線程,定時(shí)去輸出數(shù)據(jù)??梢杂?Timer,我這圖簡(jiǎn)單就直接 while 循環(huán)了。

/**
 * Dubbo線程池指標(biāo)
 *
 * @author yinjihuan
 */
@Configuration
public class DubboThreadMetrics {
    @Autowired
    private MeterRegistry meterRegistry;
    private final IterableTAG = Collections.singletonList(Tag.of("thread.pool.name", "dubboThreadPool"));
    @PostConstruct
    public void init() {
        new Thread(() -> {
            while (true) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension();
                Map executors = dataStore.get(Constants.EXECUTOR_SERVICE_COMPONENT_KEY);
                for (Map.Entry entry : executors.entrySet()) {
                    ExecutorService executor = (ExecutorService) entry.getValue();
                    if (executor instanceof ThreadPoolExecutor) {
                        ThreadPoolExecutor tp = (ThreadPoolExecutor) executor;
                        Gauge.builder("dubbo.thread.pool.core.size", tp, ThreadPoolExecutor::getCorePoolSize)
                                .description("核心線程數(shù)")
                                .baseUnit("threads")
                                .register(meterRegistry);
                        Gauge.builder("dubbo.thread.pool.largest.size", tp, ThreadPoolExecutor::getLargestPoolSize)
                                .description("歷史最高線程數(shù)")
                                .baseUnit("threads")
                                .register(meterRegistry);
                        Gauge.builder("dubbo.thread.pool.max.size", tp, ThreadPoolExecutor::getMaximumPoolSize)
                                .description("最大線程數(shù)")
                                .baseUnit("threads")
                                .register(meterRegistry);
                        Gauge.builder("dubbo.thread.pool.active.size", tp, ThreadPoolExecutor::getActiveCount)
                                .description("活躍線程數(shù)")
                                .baseUnit("threads")
                                .register(meterRegistry);
                        Gauge.builder("dubbo.thread.pool.thread.count", tp, ThreadPoolExecutor::getPoolSize)
                                .description("當(dāng)前線程數(shù)")
                                .baseUnit("threads")
                                .register(meterRegistry);
                        Gauge.builder("dubbo.thread.pool.queue.size", tp, e -> e.getQueue().size())
                                .description("隊(duì)列大小")
                                .baseUnit("threads")
                                .register(meterRegistry);
                        Gauge.builder("dubbo.thread.pool.taskCount", tp, ThreadPoolExecutor::getTaskCount)
                                .description("任務(wù)總量")
                                .baseUnit("threads")
                                .register(meterRegistry);
                        Gauge.builder("dubbo.thread.pool.completedTaskCount", tp, ThreadPoolExecutor::getCompletedTaskCount)
                                .description("已完成的任務(wù)量")
                                .baseUnit("threads")
                                .register(meterRegistry);
                    }
                }
            }
        }).start();
    }
}

指標(biāo)信息:

用了很多年Dubbo,連Dubbo線程池監(jiān)控都不知道,覺(jué)得自己很厲害?

配置線程池圖表

創(chuàng)建一個(gè)新的 dashboard 配置圖表,然后新建 panel 配置指標(biāo)信息

用了很多年Dubbo,連Dubbo線程池監(jiān)控都不知道,覺(jué)得自己很厲害? 圖片

左側(cè)配指標(biāo)信息,右側(cè)選擇對(duì)應(yīng)的圖表格式。需要注意的是,如果有多個(gè)服務(wù)實(shí)例,Metrics 這邊最好是根據(jù)服務(wù)實(shí)例來(lái)顯示,需要在指標(biāo)后面增加條件,如下:

dubbo_thread_pool_max_size_theads{application="$application", instance=~"$instance"}
用了很多年Dubbo,連Dubbo線程池監(jiān)控都不知道,覺(jué)得自己很厲害? 圖片



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉