使用 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),最后点击确定添加即可。
其他参数如采集间隔,超时时间等可以参考帮助文档 https://hertzbeat.com/docs/help/dynamic_tp/
- 完成✅,现在我们已经添加好对 DynamicTp 的监控了,查看监控列表即可看到我们的添加项。
- 点击监控列表项的操作->监控详情图标 即可浏览 DynamicTp线程池 的实时监控指标数据。
- 点击监控历史详情TAB 即可浏览 DynamicTp线程池 的历史监控指标数据图表

