【云驻共创】易用的开源实时监控工具 HertzBeat 如何与用户一起“跳动”
目录
导读 2
二、一个监控工具 3
三、一个开源项目 4
五、使用已有协议 5
六、功能支持 7
7.3 只需配置YML 就能适配一款k8s新的监控类型 10
九、 界面易用友好 12
十、 致敬开源工作者 15
十一、开源 HertzBeat for huawei cloud功能开发需求 15
十三、HertzBeat SAAS - TanCloud 27
导读
• 什么是HertzBeat?
• 一款指标监控工具是否和自带agent强相关?
• HertzBeat有哪些能力特性?
• 与现有采集协议做了什么整合?
• HertzBeat开源发展历程是怎么样的?
• 如何与华为云适配对接?
HertzBeat & TanCloud 创始人巩超为你揭秘开源实时监控工具 HertzBeat 背后的原理
一、What is HertzBeat?
HertzBeat 翻译成中文是“赫兹跳动”,是一个实时监控工具,同时它也是一款开源项目。HertzBeat 拥有强大的自定义监控能力,是一个无需 Agent 的开源实时监控告警工具
二、一个监控工具
可观测性:指标、日志和存储
HertzBeat 专注于指标监控
相关的竞品有:Prometheus 和 ZABBIX
三、一个开源项目
HertzBeat是在 Dromara开源社区下孵化的一个项目,社区地址为 https://dromara.org
它同时开源在GitHub和 Gitee,地址如下
• GitHub地址:https://github.com/dromara/hertzbeat
• Gitee地址:https://gitee.com/dromara/hertzbeat
2分钟执行一个docker run 命令,就可以把 HertzBeat 启动起来,具体详见 GitHub 的README 页面,可以说是非常便捷
四、无需 Agent
如果使用Prometheus去监控Linux或者Kafka,或者其他一些应用中间件或者服务器,可能要去部署agent。例如,监控kafaka就需要部署 kafaka gmx exporter,类似于agent的Exporter;监控Linux就需要一个Linux Exporter。Prometheus自带的exporter 和 agent是绑定在一起的这个关系
ZABBIX有使用agent,也有不带agent的一种方式。它的agent是基于socket的私有协议来做的。
HertzBeat的一个设计视角就是,尽量不做自带agent或和agent强相关的。我们可以使用生态里面的exporter和agent,使用共有协议。抽象它们的共同点,做成一个监控模板。
五、使用已有协议
现在已经有很多标准协议了,作为一个新出的产品,hertzbeat没有必要去创建一个新的。直接使用现有的就可以了,做适配就行了。
例如
• SNMP在网络这块就比较通用;
• java的话,通过JDBC可以连接市面上所有主流的RDBMS;
• Java应用通过MBean的形式暴露出一些JVM信息,我们可以通过JMX的形式去采集这些指标信息
• 很多应用会通过HTTP API 接口去暴露一些它自己的指标信息,我们只需要通过HTTP去拉取的形式,把这些数据通过JSON Parser解析后,就可以录入到我们自己的监控系统中了。
• 可以通过SSH命令,连接到类Linux服务器,来执行一些我们自己的脚本。
将 Http,Jmx,Ssh,Snmp,Jdbc等协议抽象规范可配置化,通过配置YML监控模板来使用这些协议采集指标
使用可视化页面配置YML格式的监控模板
六、功能支持
这个页面展示的是HertzBeat已经支持的监控类型(大部分都是社区的贡献者一起贡献的)
总共有以下几个大类
• 应用服务
• 数据库
• 操作系统
• 中间件
• 云原生
• 网络
• 自定义监控
七、自定义监控模板
YML监控模板定义
• 监控类型-名称-类别
• 需要输入哪些参数
• 去采集哪些指标
• 采集这些指标使用哪种协议
• 协议的参数配置
• 采集指标组合转换,单位变更等
下面是自定义监控模板的配置页面
7.1 去采集哪些指标
需要采集哪些指标,只需要在YML文件中配置即可
7.2 采集这些指标使用哪种协议
采集这些指标使用哪种协议,使用protocol属性,和http属性进行配置
7.3 只需配置YML 就能适配一款k8s新的监控类型
你只需要熟悉以下HertzBeat的基本语法,然后使用YML声明所需要监控的属性,就可以接入一款全新的监控类型
8、 HertzBeat 架构
• HertzBeat前端上使用了Angular webapp开发库。
• 后端是基于Sprng 进行开发。
• 数据信息主要是存储在H2、MySql、postgress等,这些都是可以通过配置进行切换的。
• 告警模块主要是提供一些告警计算、告警转发和告警的一些API。
• 然后是调度系统,manager下发调度任务到采集器,然后采集器通过http、sql、ssh、telnet、sdk等渠道去采集数据,然后通过内存管道(默认),或者是kafka再发送到告警模块,或者是仓储模块
• 仓储模块用来进一步处理我们这些数据,例如指标数据,需要用图表或者表格来展示给用户,例如饼图、柱状图,或者趋势图等,后面用来动态预测等
• 由于性能问题,历史数据默认存储到HertzBeat内部,在时序数据库中,只存一个小时的指标数据
• 实时数据是存在内存或者redis中,方便实时查看
• 调度没有采用spring的那一套,而是采用时间轮的方式去调度
9、 界面易用友好
作为一个开源项目,我们想把它做成一个简单易用的产品。因此,添加监控、阈值配置、消息通知都可以在可视化页面进行操作(无需使用YAML进行配置,配置之后也无需重启)
下面是一个Linux操作系统的监控列表。我们支持导入导出操作,格式有excel、json,还有yaml的形式,供你选择去做
这是 Linux 的仪表盘
告警阈值:更自由化的表达式配置阈值规则,支持告警触发次数,恢复,静默等
告警消息通知:多平台渠道,标签&级别过滤,支持通知时段等
包括:邮件、企业微信、钉钉、飞书、短信、Discord、Telegram、Slack
如果这些都不满足你的话,你也可以通过自定义Webhook的形式来自定义自己的通知渠道
10、 致敬开源工作者
这是hertzbeat在Github 仓库上的源码,欢迎大家到Github三连一下,或者提一些Issues
目前贡献的数量是121个,感谢大家一起为这个项目做的贡献(这张图没更新)
十一、开源 HertzBeat for huawei cloud功能开发需求
这是我们和华为云的合作需求开发
十二、通过华为云商店进行部署
可以通过华为云商店,一键部署 HertzBeat。
HertzBeat的镜像本身是免费的,只是需要部署在服务器上,这个服务器是收费的
接下来演示整个的部署流程
首先打开华为云官网,然后点击“云商店”,点击“基础软件”
左侧选择“管理与监控”就可以看到HertzBean
这个费用是云主机的费用(镜像价格都是0元,是完全免费的)
接下来就是购买云主机的整个流程
因为要从外部去查看服务器,因此要给它弄个公网IP
HertzBean 的启动端口是1157,因此在安全组这里,要把1157这个端口开放出来
然后进入命令行,到 /opt/hertzBeat/bin 目录下执行 startup.sh 命令
然后在公网IP就可以直接访问HertzBeat 了。它的账号/密码就是 admin/hertzbeat
进来的主页就是这样
这里就拿“百度”来举例,添加一个百度的规则。
网站监控信息比较少,只有“响应时间”和“关键字”这两个指标
然后再添加一个华为欧拉服务器
操作系统的监控仪表盘就比较多了,有cpu、内存、磁盘、网口等
也可以看它历史采集的图表数据
这里可以配置它的阈值规则,比如配置网站消息“网站检测”。可以配置“阈值触发表达式”、“通知模板(消息该发送给哪些人)”等
然后需要新增关联规则,例如把“百度”关联到这个规则
这里可以配置告警静默,比如在每周的什么时候,是处于维护状态,这时候不需要发送告警。或者夜间领导处于休息状态,也不要打扰领导
这里还可以新增接收者,需要配置正确的token
然后需要配置通知策略,哪些通知转发给哪些人
YAML 的配置比较简单,你可以参考已有的配置,或者看上面注释里的提示信息进行改造(很多也可以通过复制粘贴来完成)
欢迎大家到云商店进行购买
十三、HertzBeat SAAS - TanCloud
TanCloud是基于HertzBeat 去构建的一个云服务SAAS。定位是一个易用、友好的、高性能、分布式监控的一个环境。网址是https://console.tancloud.cn
本文参与华为云社区【内容共创】活动第23期。
任务21:DTSE Tech Talk 技术直播 NO.29 易用的开源实时监控工具 HertzBeat 如何与用户一起“跳动”
- 点赞
- 收藏
- 关注作者
评论(0)