【云驻共创】易用的开源实时监控工具 HertzBeat 如何与用户一起“跳动”

举报
福州司马懿 发表于 2023/07/18 11:49:14 2023/07/18
【摘要】 HertzBeat 翻译成中文是“赫兹跳动”,是一个实时监控工具,同时它也是一款开源项目。HertzBeat 拥有强大的自定义监控能力,是一个无需 Agent 的开源实时监控告警工具。本文将带你了解一下HertzBeat的原理,及其使用方法


导读

• 什么是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 如何与用户一起“跳动”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。