介绍
HertzBeat(赫兹跳动)是一个拥有强大自定义监控能力,高性能集群,兼容 Prometheus,无需 Agent 的开源实时监控告警系统。
特点
- 集监控+告警+通知为一体:支持对应用服务,应用程序,数据库,缓存,操作系统,大数据,中间件,Web 服务器,云原生,网络,自定义等监控,阈值告警通知一步到位。
- 易用友好:无需 Agent,全 WEB 页面操作,鼠标点一点就能监控告警,零上手学习成本。
- 将多种协议可配置化:将 Http, Jmx, Ssh, Snmp, Jdbc, Prometheus 等协议规范可配置化,只需在浏览器配置监控模版 YML 就能使用这些协议去自定义采集想要的指标。您相信只需配置下就能立刻适配一款 K8s 或 Docker 等新的监控类型吗?
- 兼容 Prometheus 生态:兼容 Prometheus 的系统生态并且更多,只需页面操作就可以监控 Prometheus 所能监控的。
- 高性能:支持多采集器集群横向扩展,支持多隔离网络监控,云边协同。
- 自由的告警通知:邮件、Discord、Slack、Telegram、钉钉、微信、飞书、短信、Webhook、Server酱等方式消息及时送达。
HertzBeat的强大自定义,多类型支持,高性能,易扩展,低耦合,希望能帮助开发者和团队快速搭建自有监控系统。
强大的监控模版
HertzBeat 的特点在于自定义监控能力,无需 Agent。其核心是独特的监控模版设计。HertzBeat 自身并未创造新的采集协议,而是充分利用现有生态:SNMP协议采集网络设备信息,JMX规范采集 Java 应用信息,JDBC规范采集数据库信息,SSH执行脚本,HTTP接口解析,IPMI协议采集服务器信息等。
HertzBeat 将这些标准协议抽象、规范并配置化,最终通过编写 YML 格式的监控模版来定义如何使用这些协议采集所需指标。用户只需在 UI 页面编写并保存一个监控模版,就能立刻适配一种新的监控类型(如 K8s 或 Docker)。
内置监控类型
官方内置了大量监控模版类型,方便用户直接在页面添加使用,一款监控类型对应一个 YML 监控模版。
强大自定义功能
每个监控类型(无论内置或自定义)都视为一个监控模版。用户可通过修改监控模版来新增、修改、删除监控指标。模版内包含协议配置、环境变量、指标转换、计算、单位转换等一系列功能。
无需 Agent
传统监控系统常需在各种主机上安装、部署、调试 Agent,管理负担沉重。HertzBeat 采用 PULL 模式,通过不同协议直连对端系统采集数据,无需在对端部署任何 Agent 或 Exporter。
- 监控 Linux 操作系统:在 HertzBeat 端输入 IP、端口、账户密码或密钥即可。
- 监控 MySQL 数据库:在 HertzBeat 端输入 IP、端口、账户密码即可。
所有密码等敏感信息均全链路加密。
高性能集群
当监控数量激增,单点采集器可能面临性能瓶颈或故障风险。HertzBeat 支持部署采集器集群,通过横向扩展指数级提升监控容量与采集性能。监控任务在集群中自动调度,支持故障迁移与负载均衡。单机模式与集群模式切换部署方便,无需额外组件。
云边协同
面对多云环境、多隔离网络(如两地三中心)场景,HertzBeat 支持部署边缘采集器集群,实现云边协同。
传统方案需在每个隔离网络部署一套完整监控系统,导致数据孤岛且维护不便。HertzBeat 的云边协同允许在多个隔离网络内部署边缘采集器,负责本网络内的数据采集并上报,由中心主服务统一调度、管理与展示,实现一套系统监控全局资源。
易用友好
- All in One:集监控、告警、通知于一体,无需单独部署多个组件。
- 全 UI 操作:新增监控、修改模版、配置告警阈值等均在 WEB 界面完成,无需修改文件或重启服务。
- 自定义友好:一个监控模版 YML 即可自动生成对应的监控管理页面、数据图表及阈值配置。
- 告警通知友好:基于表达式的阈值配置,支持多种通知渠道、告警静默、时段及级别过滤。
完全开源
HertzBeat 是 Dromara 开源社区顶级项目,Gitee GVP,采用 Apache2 协议。无监控数量、类型限制等伪开源约束。基于 Java+SpringBoot+TypeScript+Angular 主流技术栈构建,便于二次开发。
注意:开源不等同于免费,二次开发需尊重项目版权。
HertzBeat 已被 CNCF 云原生全景图收录。
安装运行
- Docker 环境下运行:
docker run -d -p 1157:1157 -p 1158:1158 --name hertzbeat tancloud/hertzbeat
- 浏览器访问
http://localhost:1157,默认账户密码 admin/hertzbeat。
- 部署采集器集群:
docker run -d -e IDENTITY=custom-collector-name -e MANAGER_HOST=127.0.0.1 -e MANAGER_PORT=1158 --name hertzbeat-collector tancloud/hertzbeat-collector
-e IDENTITY=custom-collector-name:配置采集器唯一标识,多个采集器名称不能相同。
-e MODE=public:配置运行模式 (public 集群模式 或 private 云边模式)。
-e MANAGER_HOST=127.0.0.1:配置连接主 HertzBeat 服务的 IP。
-e MANAGER_PORT=1158:配置连接主 HertzBeat 服务的端口(默认1158)。
效果展示
登陆页面
用户管理由配置文件 sureness.yml 维护,可修改以管理用户、角色和权限。默认账户密码 admin/hertzbeat。
概览页面
分类展示监控大类数量分布,直观查看并跳转管理。展示采集器集群状态(上线状态、任务、启动时间等)。下方展示最近告警列表、级别分布及处理率。
监控中心
支持对应用、数据库、操作系统、中间件、网络等监控的管理。以列表形式展示,支持新增、修改、删除、批量管理、标签分组及查询过滤。
新增/修改监控
配置监控实例的 IP、端口等参数,设置采集周期和调度方式。配置参数由对应监控模版定义。支持关联标签进行分组管理。
监控详情
- 基本参数与指标数据:展示监控基本信息和所有指标的实时值(用于参考配置告警阈值)。
- 历史数据图表:以趋势图展示数值指标的历史数据,支持查询小时、天、月级数据。
⚠️ 注意:历史图表需配置外置时序数据库(支持 IOTDB, TDengine, InfluxDB, GreptimeDB)以获得完整功能。
告警中心
展示已触发的告警消息,支持告警处理、标记、删除等批量操作。
阈值规则
配置监控可用性及指标阈值,触发告警。告警级别分通知、严重、紧急三级。支持可视化页面配置或表达式配置,可设置触发次数、级别、通知模版及关联监控。
告警收敛
对特定时间段内的重复告警进行去重,避免告警泛滥。可配置生效时间段、标签及告警级别匹配规则。
告警静默
在特定一次性或周期性时间段内屏蔽告警通知,适用于系统维护、免打扰时段等场景。支持按时间段、标签及告警级别匹配。
消息通知
将告警通过多种渠道通知指定接收人。
- 接收人管理:维护接收人及其通知方式信息。
- 通知策略管理:配置将哪些告警(按标签、级别匹配)通知给哪些接收人。
支持邮件、钉钉、微信、飞书、短信、Webhook等十余种方式。支持自定义通知模版。
监控模版
HertzBeat 的核心功能,通过配置 YML 模版自定义采集指标。所有内置监控类型(如 mysql, website, jvm, k8s)均对应一个监控模版,用户可新增或修改以实现个性化监控。
项目地址
https://github.com/apache/hertzbeat
https://gitee.com/dromara/hertzbeat