HertzBeat:一款超赞易用的开源实时监控告警系统
Apache HertzBeat (incubating)是一个易用友好的开源实时监控告警系统,无需 Agent,高性能集群,兼容 Prometheus,提供强大的自定义监控和状态页构建能力。HertzBeat
的强大自定义,多类型支持,高性能,易扩展,低耦合,快速搭建自有监控告警系统。
官网:https://hertzbeat.apache.org/
Gitee https://gitee.com/dromara/hertzbeat
Github https://github.com/dromara/hertzbeat
产品特点
集 监控+告警+通知 为一体,支持对应用服务,应用程序,数据库,缓存,操作系统,大数据,中间件,Web 服务器,云原生,网络,自定义等监控阈值告警通知一步到位。
易用友好,无需
Agent
,全WEB
页面操作,鼠标点一点就能监控告警,零上手学习成本。将
Http, Jmx, Ssh, Snmp, Jdbc, Prometheus
等协议规范可配置化,只需在浏览器配置监控模版YML
就能使用这些协议去自定义采集想要的指标。您相信只需配置下就能立刻适配一款K8s
或Docker
等新的监控类型吗?兼容
Prometheus
的系统生态并且更多,只需页面操作就可以监控Prometheus
所能监控的。高性能,支持多采集器集群横向扩展,支持多隔离网络监控,云边协同。
自由的告警阈值规则,
邮件
Discord
Slack
Telegram
钉钉
微信
飞书
短信
Webhook
Server酱
等方式消息及时送达。提供强大的状态页构建能力,轻松向用户传达您产品服务的实时状态。
强大的监控模版
HertzBeat 自身并没有去创造一种采集数据协议让监控对端来适配它。而是充分使用了现有的生态,SNMP协议
采集网络交换机路由器信息,JMX规范
采集JAVA应用信息,JDBC规范
采集数据集信息,SSH
直连执行脚本获取回显信息,HTTP+(JsonPath | prometheus等)
解析API接口信息,IPMI协议
采集服务器信息等等。
HertzBeat 使用这些已有的标准协议或规范,将他们抽象规范可配置化,最后使其都可以通过编写YML格式监控模版的形式,来制定模版使用这些协议来采集任何想要的指标数据。
官方内置了大量的监控模版类型,方便用户直接在页面添加使用,一款监控类型对应一个YML监控模版。
Website, Port Telnet, Http Api, Ping Connect, Jvm, SiteMap, Ssl Certificate, SpringBoot2, FTP Server, SpringBoot3, Udp Port, Dns, Pop3, Ntp, Api Code, Smtp, Nginx
Mysql, PostgreSQL, MariaDB, Redis, ElasticSearch, SqlServer, Oracle, MongoDB, DM, OpenGauss, ClickHouse, IoTDB, Redis Cluster, Redis SentinelDoris BE, Doris FE, Memcached, NebulaGraph
Linux, Ubuntu, CentOS, Windows, EulerOS, Fedora CoreOS, OpenSUSE, Rocky Linux, Red Hat, FreeBSD, AlmaLinux, Debian Linux
Tomcat, Nacos, Zookeeper, RabbitMQ, Flink, Kafka, ShenYu, DynamicTp, Jetty, ActiveMQ, Spring Gateway, EMQX MQTT, AirFlow, Hive, Spark, Hadoop
CiscoSwitch, HpeSwitch, HuaweiSwitch, TpLinkSwitch, H3cSwitch
和更多自定义监控模版。
通知支持
Discord
Slack
Telegram
邮件
钉钉
微信
飞书
短信
Webhook
Server酱
。
无需 Agent
对于使用过各种系统的用户来说,可能最麻烦头大的不过就是各种
agent
的安装部署调试升级了。
每台主机得装个agent
,为了监控不同应用中间件可能还得装几个对应的agent
,监控数量上来了轻轻松松上千个,写个批量脚本可能会减轻点负担。agent
的版本是否与主应用兼容,agent
与主应用的通讯调试,agent
的同步升级等等等等,这些全是头大的点。
HertzBeat
的原理就是使用不同的协议去直连对端系统,采用 PULL
的形式去拉取采集数据,无需用户在对端主机上部署安装 Agent
| Exporter
等。
比如监控
linux操作系统
, 在HertzBeat
端输入IP端口账户密码或密钥即可。比如监控
mysql数据库
, 在HertzBeat
端输入IP端口账户密码即可。
密码等敏感信息全链路加密
高性能集群
当监控数量指数级上升,采集性能下降或者环境不稳定容易造成采集器单点故障时,这时我们的采集器集群就出场了。
HertzBeat
支持部署采集器集群,多采集器集群横向扩展,指数级提高可监控数量与采集性能。监控任务在采集器集群中自调度,单采集器挂掉无感知故障迁移采集任务,新加入采集器节点自动调度分担采集压力。
单机模式与集群模式相互切换部署非常方便,无需额外组件部署。
云边协同
两地三中心,多云环境,多隔离网络,这些场景名词可能大家略有耳闻。当需要用一套监控系统统一监控不同隔离网络的IT资源时,这时我们的云边协同就来啦。
HertzBeat
支持部署边缘采集器集群,与主HertzBeat
服务云边协同提升采集能力。
在多个网络不相通的隔离网络中,在以往方案中我们需要在每个网络都部署一套监控系统,这导致数据不互通,管理部署维护都不方便。HertzBeat
提供的云边协同能力,可以在多个隔离网络部署边缘采集器,采集器在隔离网络内部进行监控任务采集,采集数据上报,由主服务统一调度管理展示。
易用友好
集 监控+告警+通知 All in one, 无需单独部署多个组件服务。
全UI界面操作,不管是新增监控,修改监控模版,还是告警阈值通知,都可在WEB界面操作完成,无需要修改文件或脚本或重启。
无需 Agent, 监控对端我们只需在WEB界面填写所需IP端口账户密码等参数即可。
自定义友好,只需一个监控模版YML,自动生成对应监控类型的监控管理页面,数据图表页面,阈值配置等。
阈值告警通知友好,基于表达式阈值配置,多种告警通知渠道,支持告警静默,时段标签告警级别过滤等。
完全开源
Apache 基金会孵化器下开源项目,Gitee GVP,使用
Apache2
协议,由自由开放的开源社区主导维护的开源协作产品。无监控数量
License
,监控类型等伪开源限制。基于
Java+SpringBoot+TypeScript+Angular
主流技术栈构建,方便的二次开发。开源不等同于免费,基于HertzBeat二次开发需保留页面脚注,版权等。
安装配置
HertzBeat 支持通过源码安装启动,Docker 容器运行和安装包方式安装部署,CPU 架构支持 x86/arm64。
方式一:Docker 方式快速安装
docker
环境仅需一条命令即可开始
docker run -d -p 1157:1157 -p 1158:1158 --name hertzbeat apache/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 apache/hertzbeat-collector
-e IDENTITY=custom-collector-name
: 配置此采集器的唯一性标识符名称,多个采集器名称不能相同,建议自定义英文名称。-e MODE=public
: 配置运行模式(public or private), 公共集群模式或私有云边模式。-e MANAGER_HOST=127.0.0.1
: 配置连接主 HertaBeat 服务的对外 IP。-e MANAGER_PORT=1158
: 配置连接主 HertzBeat 服务的对外端口,默认1158。
方式二:通过安装包安装
下载您系统环境对应的安装包
hertzbeat-xx.tar.gz
GITHUB Release配置 HertzBeat 的配置文件
hertzbeat/config/application.yml
(可选)部署启动
$ ./bin/startup.sh
或bin/startup.bat
浏览器访问
http://localhost:1157
即可开始,默认账号密码admin/hertzbeat
部署采集器集群(可选)
下载采集器安装包
hertzbeat-collector-xx.tar.gz
到规划的另一台部署主机上 GITHUB Release配置采集器的配置文件
hertzbeat-collector/config/application.yml
里面的连接主 HertzBeat 服务的对外 IP,端口,当前采集器名称(需保证唯一性)等参数identity
mode
(public or private)manager-host
manager-port
collector: dispatch: entrance: netty: enabled: true identity: ${IDENTITY:} mode: ${MODE:public} manager-host: ${MANAGER_HOST:127.0.0.1} manager-port: ${MANAGER_PORT:1158}
启动
$ ./bin/startup.sh
或bin/startup.bat
浏览器访问主 HertzBeat 服务
http://localhost:1157
查看概览页面即可看到注册上来的新采集器
登录
浏览器访问 http://localhost:1157
默认账户密码 admin/hertzbeat
HertzBeat 的用户管理统一由配置文件 sureness.yml
维护,用户可以通过修改此文件来新增删除修改用户信息,用户角色权限等。默认账户密码 admin/hertzbeat
概览页面
全局概览页面,分类展示了当前监控大类别数量分布,用户可直观查看当前的监控类型与数量并点击跳转至对应监控类型进行维护管理。
展示当前注册的采集器集群状态,包括采集器的上线状态,监控任务,启动时间,IP地址,名称等。
下发展示了最近告警信息列表,告警级别分布情况,告警处理率情况。
监控中心
监控入口,支持对应用服务,数据库,操作系统,中间件,网络,自定义等监控的管理。
以列表的形式展示当前已添加的监控,支持对监控的新增,修改,删除,取消监控,导入导出,批量管理等。
支持标签分组,查询过滤,查看监控详情入口等。