使用 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),最后点击确定添加即可。
其他参数如采集间隔,超时时间等可以参考帮助文档 https://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,短信等,我们这里以常用的钉钉为例。
- 参照此帮助文档 https://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: https://github.com/dromara/dynamic-tp
HertzBeat Github: https://github.com/dromara/hertzbeat
欢迎了解使用Star支持哦!
只需要一条docker命令即可安装体验heartbeat :
docker run -d -p 1157:1157 --name hertzbeat tancloud/hertzbeat

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MASA Stack 1.0 发布会讲稿——趋势篇
世界技术圈在发生什么? 云原生的演进 这里跟大家一起回顾一下张磊老师在云原生开发者日上关于“云原生技术演进”的分享。 有很多人会问,是不是云原生就等于K8s这些开源项目?其实今天出现的这些开源项目如K8s、docker、istio、dapr,是一些概念与方法论的一种技术实现,他们的背后就是云原生的理论体系,比如不可变的基础设施,高自动化、自愈自运维,语言和架构无关,高可扩展等等,而我们现在在实践的微服务、容器化、sidecar等就是为了支撑这些概念和方法论的技术和架构实现。这里有一条逻辑链路,就是当有一套概念和方法论之后,就会出现对应的技术和架构,我们在开源社区里就会出现相应的开源实现。 举个例子,容器化的技术架构对应的开源实现就有Docker、K8s这样的开源项目。用户端体现的这些开源项目,他其实实践的就是一套技术架构,而在这套技术架构背后的理论思想就是我们说的概念和方法论。整个云原生生态的体现就是这么一套方法论加架构加开源技术的这么一个集合,他的目的就是希望让云计算技术很好的去服务我们的开发者,目标就是帮助开发者降本增效,而云的一些特质就可以帮助我们去实现这一目标,比如云是无限弹性...
- 下一篇
Backbone前端框架解读
作者: 京东零售 陈震 一、 什么是Backbone 在前端的发展道路中,前端框架元老之一jQuery对繁琐的DOM操作进行了封装,提供了链式调用、各类选择器,屏蔽了不同浏览器写法的差异性,但是前端开发过程中依然存在作用域污染、代码复用度低、冗余度高、数据和事件绑定烦琐等痛点。 5年后,Backbone横空出世,通过与Underscore、Require、Handlebar的整合,提供了一个轻量和友好的前端开发解决方案,其诸多设计思想对于后续的现代化前端框架发展起到了举足轻重的作用,堪称现代前端框架的基石。 通过对Backbone前端框架的学习,让我们领略其独特的设计思想。 二、 核心架构 按照MVC框架的定义,MVC是用来将应用程序分为三个主要逻辑组件的架构模式:模型,视图和控制器。这些组件被用来处理一个面向应用的特定开发。 MVC是最常用的行业标准的Web开发框架,以创建可扩展的项目之一。 Backbone.js为复杂WEB应用程序提供模型(models)、集合(collections)、视图(views)的结构。 ◦ 其中模型用于绑定键值数据,并通过RESRful JSON接...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题