😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~
HertzBeat:一款开源实时监控告警系统,简直太好用了!
- 前言
- 什么是HertzBeat
- 开始安装
- 监控Redis数据库实战
- 监控SpringBoot服务实战
- 告警配置
- 结语
前言
随着信息技术的快速发展,企业面临的数据量不断增长,同时也面临着更加复杂的系统架构和运维挑战。在这样的背景下,实时监控告警系统成为了保障系统稳定性和业务连续性的关键工具之一。这里给大家介绍一款由Apache
开源的实时监控告警系统HertzBeat
什么是HertzBeat
HertzBeat是一个易用友好的开源实时监控告警系统,无需 Agent,高性能集群,兼容 Prometheus,提供强大的自定义监控和状态页构建能力。
项目地址:https://hertzbeat.apache.org/zh-cn/
特点
- 集
监控+告警+通知
为一体,支持对应用服务,应用程序,数据库,缓存,操作系统,大数据,中间件,Web服务器,云原生,网络,自定义等监控阈值告警通知一步到位。- 易用友好,无需 Agent,全 WEB 页面操作,鼠标点一点就能监控告警,零上手学习成本。
- 将
Http
,Jmx
,Ssh
,Snmp
,Jdbc
,Prometheus
等协议规范可配置化,只需在浏览器配置监控模版 YML 就能使用这些协议去自定义采集想要的指标。- 兼容Prometheus 的系统生态并且更多,只需页面操作就可以监控 Prometheus 所能监控的。
- 高性能,支持多采集器集群横向扩展,支持多隔离网络监控,云边协同。
- 自由的告警阈值规则,
邮件
Discord
Slack
Telegram
钉钉
微信
飞书
短信
等方式消息及时送达。- 提供强大的状态页构建能力,轻松向用户传达您产品服务的实时状态。
HertzBeat 自身并没有去创造一种采集数据协议让监控对端来适配它。而是充分使用了现有的生态, SNMP
协议采集网络交换机路由器信息,JMX
规范采集JAVA应用信息,JDBC
规范采集数据集信息,SSH
直连执行脚本获取回显信息,HTTP+(JsonPath | prometheus等)
解析API接口信息,IPMI协议采集服务器信息等等。
开始安装
安装HertzBeat的方式有很多种,可以使用安装包的方式部署,也可以使用通过 Docker
方式安装,这里我们使用Docker来进行安装
首先需要我们配置好 Docker
环境,如果有朋友不熟悉 Docker
可以移步博主的 Docker
教程专栏https://blog.csdn.net/lhmyy521125/category_12333482.html 学习
拉取HertzBeat Docker镜像
docker pull tancloud/hertzbeat docker pull tancloud/hertzbeat-collector# 若网络超时可以尝试# $ docker pull quay.io/tancloud/hertzbeat# $ docker pull quay.io/tancloud/hertzbeat-collector
启动HertzBeat Docker容器
docker run -d -p 1157:1157 -p 1158:1158 / -e LANG=zh_CN.UTF-8 / -e TZ=Asia/Shanghai / -v $(pwd)/data:/opt/hertzbeat/data / -v $(pwd)/logs:/opt/hertzbeat/logs / -v $(pwd)/application.yml:/opt/hertzbeat/config/application.yml / -v $(pwd)/sureness.yml:/opt/hertzbeat/config/sureness.yml / --restart=always / --name hertzbeat tancloud/hertzbeat
这条命令启动一个运行HertzBeat的Docker容器,并且将容器的1157端口映射到宿主机的1157端口上。若宿主机已有进程占用该端口,则需要修改主机映射端口
参数说明
- docker run -d : 通过Docker运行一个容器,使其在后台运行
- -e LANG=zh_CN.UTF-8 : 设置系统语言
- -e TZ=Asia/Shanghai : 设置系统时区
- -p 1157:1157 -p 1158:1158 : 映射容器端口到主机端口,请注意,前面是宿主机的端口号,后面是容器的端口号。1157是WEB端口,1158是集群端口。
- -v $(pwd)/data:/opt/hertzbeat/data : (可选,数据持久化)重要⚠️ 挂载H2数据库文件到本地主机,保证数据不会因为容器的创建删除而丢失
- -v $(pwd)/logs:/opt/hertzbeat/logs : (可选,不需要可删除)挂载日志文件到本地主机,保证日志不会因为容器的创建删除而丢失,方便查看
- -v $(pwd)/application.yml:/opt/hertzbeat/config/application.yml : (可选,不需要可删除)挂载上上一步修改的本地配置文件到容器中,即使用本地配置文件覆盖容器配置文件。我们需要修改此配置文件的MYSQL,TDengine配置信息来连接外部服务
- -v $(pwd)/sureness.yml:/opt/hertzbeat/config/sureness.yml : (可选,不需要可删除)挂载上一步修改的账户配置文件到容器中,若无修改账户需求可删除此命令参数
- –name hertzbeat : 命名容器名称 hertzbeat
- –restart=always :(可选,不需要可删除)使容器在Docker启动后自动重启。若您未在容器创建时指定该参数,可通过以下命令实现该容器自启
开始探索HertzBeat
浏览器访问 http://ip:1157/ 即可开始探索使用HertzBeat,默认账户密码 admin/hertzbeat
监控Redis数据库实战
左侧菜单找到监控中心 - 添加监控 - 找到缓存 redis数据库
配置redis连接参数,
注意你的redis是否开启了保护模式、服务器是否允许远程连接,否则会连接不上,可以点击下面测试按钮测试是否能连接上
保存后开启监控 -点击监控按钮 得到如下图展示
监控SpringBoot服务实战
Spring Boot Actuator 是 Spring Boot 框架中的一个模块,它提供了一组用于监控和管理 Spring Boot 应用程序的功能。Actuator 模块为开发人员和运维团队提供了一些有用的端点(endpoints),可以通过 HTTP 或 JMX 进行访问,以获取应用程序的运行时信息、性能指标和健康状况等。
SpringBoot 项目中添加 actuator 依赖
application.yml追加Actuator配置
# Actuator 监控端点的配置项management: endpoints: web: # Actuator 提供的 API 接口的根目录。默认为 /actuator base-path: /actuator exposure: # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。 include: '*' endpoint: # 关闭heapdump heapdump: enabled: false # env env: enabled: false logfile: external-file: ./logs/sys-console.log
查看暴露出来的端点 http://应用访问IP地址/actuator
依旧还是左侧菜单找到监控中心 - 添加监控 - 找到SpringBoot
配置相关参数
保存后开启监控 -点击监控按钮 得到如下图展示
告警配置
告警是监控系统中至关重要的功能,它为运维团队提供了实时的、即时的反馈,使其能够迅速响应和解决潜在的问题,这里再较大家怎么设置发送邮件告警
左侧菜单系统设置置 - 消息服务配置
这里博主配置QQ邮箱的SMTP
左侧菜单告警 - 消息通知 - 通知媒介 - 新增接收对象
通知媒介可以理解:谁接收告警信息,HertzBeat 定义了多种通知方式,比如邮件、钉钉、企业微信等。
定义通知策略
通知策略可以配置接收对象、通知模板、通知时间等。
测试通知效果
关闭我们刚才的Springboot项目,监控中心会显示告警信息:
查看接收邮件里是否存在告警邮件
结语
HertzBeat作为一款强大的实时监控告警系统,为企业提供了快速响应系统异常和故障的能力,帮助企业提升了系统的稳定性和可用性。通过合理配置和使用HertzBeat,可以有效地降低系统故障对业务的影响,提高运维效率,是现代企业不可或缺的重要工具之一。
通过本文的介绍,相信读者对HertzBeat有了更深入的了解,并能够更加灵活地应用到实际的系统监控和运维工作中。