使用 HertzBeat 對 執行緒池框架 DynamicTp 進行監控實踐
使用 HertzBeat 對 執行緒池框架 DynamicTp 進行監控實踐!
執行緒池框架 DynamicTp 介紹
DynamicTp 是Jvm語言的基於配置中心的輕量級動態執行緒池,內建監控告警功能,可通過SPI自定義擴充套件實現。
- 支援對執行中執行緒池引數的動態修改,實時生效。
- 實時監控執行緒池的執行狀態,觸發設定的報警策略時報警,報警資訊推送辦公平臺。
- 定時採集執行緒池指標資料,配合像 grafana 這種視覺化監控平臺做大盤監控。
HertzBeat 介紹
HertzBeat 是一款開源,易用友好的實時監控系統,無需Agent,擁有強大自定義監控能力。
- 支援對應用服務,資料庫,作業系統,中介軟體,雲原生等監控,閾值告警,告警通知(郵件微信釘釘飛書簡訊 Slack Discord Telegram)。
- 其將Http,Jmx,Ssh,Snmp,Jdbc等協議規範可配置化,只需配置YML就能使用這些協議去自定義採集任何您想要採集的指標。您相信只需配置YML就能立刻適配一個K8s或Docker等新的監控型別嗎?
- HertzBeat 的強大自定義,多型別支援,易擴充套件,低耦合,希望能幫助開發者和中小團隊快速搭建自有監控系統。
在 HertzBeat 5分鐘搞定監控 DynamicTp
操作前提,您已擁有 DynamicTp 環境和 HertzBeat 環境。
一. 在 DynamicTp 端暴露出DynamicTp
指標介面 /actuator/dynamic-tp
,它將提供 metrics 介面資料。
- 開啟 SpringBoot Actuator Endpoint 暴露出
DynamicTp
指標介面
management:
endpoints:
web:
exposure:
include: '*'
- 重啟後測試訪問指標介面
ip:port/actuator/dynamic-tp
是否有響應json資料如下:
[
{
"poolName": "commonExecutor",
"corePoolSize": 1,
"maximumPoolSize": 1,
"queueType": "LinkedBlockingQueue",
"queueCapacity": 2147483647,
"queueSize": 0,
"fair": false,
"queueRemainingCapacity": 2147483647,
"activeCount": 0,
"taskCount": 0,
"completedTaskCount": 0,
"largestPoolSize": 0,
"poolSize": 0,
"waitTaskCount": 0,
"rejectCount": 0,
"rejectHandlerName": null,
"dynamic": false,
"runTimeoutCount": 0,
"queueTimeoutCount": 0
},
{
"maxMemory": "4 GB",
"totalMemory": "444 MB",
"freeMemory": "250.34 MB",
"usableMemory": "3.81 GB"
}
]
二. 在 HertzBeat 監控頁面新增 DynamicTp 執行緒池監控
- 點選新增 DynamicTp 監控
路徑:選單 -> 中介軟體監控 -> DynamicTp監控 -> 新增DynamicTp監控
- 配置監控 DynamicTp 所需引數
在監控頁面填寫 DynamicTp 服務IP,監控埠(預設8080),最後點選確定新增即可。
其他引數如採集間隔,超時時間等可以參考幫助文件 http://hertzbeat.com/docs/help/dynamic_tp/
- 完成✅,現在我們已經新增好對 DynamicTp 的監控了,檢視監控列表即可看到我們的新增項。
- 點選監控列表項的操作->監控詳情圖示 即可瀏覽 DynamicTp執行緒池 的實時監控指標資料。
- 點選監控歷史詳情TAB 即可瀏覽 DynamicTp執行緒池 的歷史監控指標資料圖表📈。
DONE!完成啦!通過上面幾步,總結起來其實也就只用兩步
- 第一步暴露 DynamicTp 端
metrics
端點/actuator/dynamic-tp
- 第二步在 HertzBeat 監控頁面配置IP埠新增監控即可
通過上面的兩步我們就完成了對 DynamicTp 的監控,我們可以在 HertzBeat 隨時檢視監控詳情指標資訊來觀測其服務狀態。 當然只是看肯定是不完美的,監控往往伴隨著告警閾值,當 DynamicTp 的執行緒池指標超出我們的期望值或異常時,能及時的通知到我們對應的負責人,負責人收到通知處理問題,這樣才是一個完整的監控告警流程。
接下來我們就來一步一步演示如何配置 HertzBeat 系統裡的閾值告警通知,讓 DynamicTp執行緒池 的指標異常時,及時通知給我們
三. 在 HertzBeat 系統新增 DynamicTp執行緒池 指標閾值告警
- 對某個重要指標配置告警閾值
路徑:選單 -> 告警閾值 -> 新增閾值
- 選擇配置的指標物件,DynamicTp監控主要是一些執行緒池相關指標,我們舉例對
執行超時執行緒數量
thread_pool_running
->run_timeout_count
這個指標進行閾值設定, 當執行緒執行超時數量大於1時發出告警。 - 這裡我們就配置當此指標
thread_pool_running
的run_timeout_count>1
時發出告警,告警級別為嚴重告警,三次即觸發,具體如下圖。
- 新增訊息通知接收人
配置接收人,讓告警訊息知道要發給誰,用什麼方式發。
路徑:選單 -> 告警通知 -> 告警接收人 -> 新增接收人
訊息通知方式支援 郵件,釘釘,企業微信,飛書,WebHook,簡訊等,我們這裡以常用的釘釘為例。
- 參照此幫助文件 http://hertzbeat.com/docs/help/alert_dingtalk 在釘釘端配置機器人,設定安全自定義關鍵詞
HertzBeat
,獲取對應access_token
值。 - 在 HertzBeat 配置接收人蔘數如下。
【告警通知】->【新增接收人】 ->【選擇釘釘機器人通知方式】->【設定釘釘機器人ACCESS_TOKEN】-> 【確定】
- 配置關聯的告警通知策略⚠️ 【新增通知策略】-> 【將剛設定的接收人關聯】-> 【確定】
配置告警通知策略,讓告警訊息與接收人繫結,這樣就能決定哪些告警發給哪個人。
完畢,現在坐等告警訊息過來啦。叮叮叮叮
[HertzBeat告警通知]
告警目標物件 : dynamic_tp.thread_pool_running.run_timeout_count
所屬監控ID : 205540620349493
所屬監控名稱 : DynamicTp_localhost
告警級別 : 嚴重告警
告警觸發時間 : 2023-02-02 22:17:06
內容詳情 : DynamicTp has run timeout thread, count is 2
小結
這篇實踐文章帶我們體驗瞭如何使用 HertzBeat 監控 DynamicTp執行緒池 指標資料,可以發現集
監控-告警-通知
的 HertzBeat 在操作與使用方面更加的便捷,只需頁面上簡單點一點就能把 DynamicTp執行緒池 納入監控並告警通知,再也不需要部署多個元件寫YML配置檔案那些繁瑣操作了。
DynamicTp Github: http://github.com/dromara/dynamic-tp
HertzBeat Github: http://github.com/dromara/hertzbeat
歡迎瞭解使用Star支援哦!
只需要一條docker命令即可安裝體驗heartbeat :
docker run -d -p 1157:1157 --name hertzbeat tancloud/hertzbeat
- 使用 HertzBeat 5分鐘搞定 SpringBoot2 監控告警
- 使用開源實時監控系統 HertzBeat 對 Mysql 資料庫監控告警實踐
- 使用 HertzBeat 對 執行緒池框架 DynamicTp 進行監控實踐
- 使用 HertzBeat 對 API 閘道器 Apache ShenYu 的監控實踐
- 5分鐘搞定 HertzBeat 對物聯網資料庫 IoTDB 監控實踐
- 中秋第一天,我寫了一篇SSL證書過期監控最佳實踐
- 00 後 Dromara 成員帶你學 Java Lambda 函式程式設計
- 學到就是賺到,面試加分項之WebServer執行緒池管理!
- 啥?他一個人寫了個價值100萬的軟體,卻用來開源了!
- 執行緒池,我是誰?我在哪兒?
- API除錯 API管理 API搜尋工具,為什麼不能在一起?
- IDEA版Postman - Fast Request版本更新,為簡化開發而生
- Hutool-5.8.0.M1 釋出,嘗試里程碑釋出
- HertzBeat v1.0.beta.6 釋出,Linux 監控支援來啦!
- 【萬字長文】Apache ShenYu整合Apache RocketMQ實現海量日誌採集的原理與實踐
- 易用友好的監控告警系統HertzBeat赫茲跳動v1.0.beta.5釋出
- MaxKey 單點登入認證系統 v3.3.3 GA 釋出