Apache HertzBeat:无需Agent的开源实时观测系统,构建企业级监控

360影视 欧美动漫 2025-09-06 17:30 2

摘要:在云原生和微服务架构盛行的时代,监控系统已成为保障业务稳定运行的关键基础设施。传统的监控系统往往需要在被监控节点上部署Agent,增加了部署和维护的复杂性,同时也带来了安全风险和资源消耗。Apache HertzBeat作为Apache软件基金会孵化中的开源项

在云原生和微服务架构盛行的时代,监控系统已成为保障业务稳定运行的关键基础设施。传统的监控系统往往需要在被监控节点上部署Agent,增加了部署和维护的复杂性,同时也带来了安全风险和资源消耗。Apache HertzBeat作为Apache软件基金会孵化中的开源项目,提供了一种全新的监控思路:无需Agent,全Web界面操作,高性能集群,兼容Prometheus生态,同时提供强大的自定义监控和状态页构建能力。

无需Agent,简化监控部署

HertzBeat的核心创新点在于"无需Agent"。传统监控系统如Prometheus需要在被监控节点上部署exporter,而HertzBeat则利用现有的标准协议(HTTP, JMX, SSH, SNMP, jdbc等)直接连接目标系统进行数据采集。

例如,监控MySQL数据库时,只需在HertzBeat的Web界面输入MySQL的IP、端口、用户名和密码,即可开始监控。监控Linux操作系统时,只需输入服务器的IP、SSH端口、用户名和密码,即可通过SSH执行命令获取系统指标。

这种设计极大简化了监控部署流程,无需在每个被监控节点上安装额外的Agent,减少了部署、维护和升级的复杂性。同时,HertzBeat对敏感信息(如密码)进行全链路加密,确保数据安全。

高性能集群,支持大规模监控

随着监控规模的扩大,单点监控系统往往面临性能瓶颈和单点故障风险。HertzBeat支持部署采集器集群,实现多节点横向扩展。

采集器集群支持以下特性:

自动负载均衡:监控任务在多个采集器之间智能分配自动故障转移:当某个采集器节点宕机时,其他节点自动接管其监控任务单机与集群模式无缝切换:部署方式灵活,可根据需求调整

HertzBeat的高性能设计使其能够轻松应对大规模监控场景。例如,一个采集器集群可以同时监控数千个节点,采集性能随着集群规模线性提升。

兼容Prometheus,无缝集成生态

HertzBeat兼容Prometheus的系统生态,可以监控Prometheus所能监控的指标。这意味着用户可以将HertzBeat与现有的Prometheus监控体系无缝集成。

HertzBeat不仅支持Prometheus的指标采集,还支持通过YML配置模板自定义监控任何指标。这种设计使得HertzBeat既能利用Prometheus生态的优势,又能满足特定的监控需求。

强大的自定义监控能力

HertzBeat的核心竞争力在于其强大的自定义监控能力。通过YML格式的监控模板,用户可以轻松定义任何监控指标。

HertzBeat将每个监控类型视为一个监控模板,例如MySQL监控、Redis监控、Kubernetes监控等。用户可以通过修改这些模板,来添加、修改或删除监控指标。

Web服务:Website, Port Telnet, Http Api应用框架:Jvm, SpringBoot2, SpringBoot3数据库:MySQL, PostgreSQL, MariaDB, Redis, MongoDB操作系统:Linux, Ubuntu, CentOS, Windows中间件:Tomcat, Nacos, Zookeeper, RabbitMQ云原生:Kubernetes, Docker网络设备:CiscoSwitch, HuaweiSwitch, HpeSwitch

用户还可以通过自定义YML模板,轻松适配新的监控类型,如Kubernetes或Docker。

状态页构建能力

HertzBeat提供强大的状态页构建能力,可以轻松构建对外服务状态页,向用户展示产品服务的实时状态。状态页组件可以与监控状态联动同步,支持故障事件维护管理机制。

构建状态页的步骤简单直观:

创建状态页面添加状态组件(如数据库、API服务等)配置组件与监控指标的关联发布状态页

这大大提高了企业服务的透明度,增强了用户信任,降低了沟通成本。

HertzBeat的架构设计简洁而高效,主要包括以下几个组件:

Web前端:基于Angular和TypeScript构建的用户界面,提供直观的监控配置、数据展示和告警管理功能。后端服务:基于SpringBoot构建的主服务,负责监控任务调度、数据存储、告警处理和通知发送。采集器集群:负责实际的数据采集工作,支持多节点部署,实现横向扩展。存储系统:支持多种时序数据库(如VictoriaMetrics、InfluxDB、TSDB等),用于存储监控数据。通知系统:支持多种通知渠道,包括邮件、Discord、Slack、Telegram、钉钉、微信、飞书、短信、Webhook等。

HertzBeat的架构设计使得系统具有高可用性、可扩展性和灵活性,能够满足不同规模和复杂度的监控需求。Github开源地址是https://github.com/apache/hertzbeat

HertzBeat的安装和使用非常简单,以下是快速上手指南:

Docker安装

最简单的安装方式是使用Docker:

docker run -d -p 1157:1157 -p 1158:1158 --name hertzbeat apache/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 : 配置连接主 HertzBeat 服务的对外 IP。-e MANAGER_PORT=1158 : 配置连接主 HertzBeat 服务的对外端口,默认1158。

docker简单安装如下:

安装完成后,浏览器访问http://localhost:1157

使用默认账号密码admin/hertzbeat登录,登录之后首页如下:

创建监控任务登录HertzBeat管理界面点击"监控中心" -> "新增监控"选择监控类型,如"MySQL",此步骤需要MySQL的驱动,下载 MYSQL jdbc driver jar, 例如 mysql-connector-java-8.1.0.jar,将此 jar 包拷贝放入 HertzBeat 的安装目录下的 ext-lib 目录下,重启 HertzBeat 服务。我们是使用的docker启动的,将驱动复制到容器中命令如下:docker cp /path/to/local/file container_id:/path/in/container/填写数据库连接信息保存配置

HertzBeat会自动创建监控任务,并开始采集数据。

自定义监控详解

HertzBeat的自定义监控能力是其核心优势。下面以自定义监控Kubernetes为例,详细说明如何通过YML配置模板实现自定义监控。

步骤1:了解Kubernetes监控需求

Kubernetes监控通常需要收集以下指标:

节点状态(CPU、内存、磁盘使用率)Pod状态(运行状态、重启次数)服务状态(端口、健康检查)集群状态(节点数、Pod数)

步骤2:创建YML监控模板

在HertzBeat中,通过"监控模板"页面,可以创建新的YML监控模板。以下是Kubernetes监控的YML模板示例:

name: Kubernetesdescription: Kubernetes cluster monitoringprotocol: Httpconfig:url: http://{{host}}:{{port}}/api/v1/namespacesheaders:Authorization: Bearer {{token}}method: GETtimeout: 5000metrics:- name: node_countdescription: Number of nodes in the clustertype: gaugepath: $.items[0].status.capacity.cpuunit: core- name: pod_countdescription: Total number of pods in the clustertype: gaugepath: $.items[0].status.capacity.podsunit: count- name: pod_runningdescription: Number of running podstype: gaugepath: $.items[0].status.conditions[?(@.type=='Ready')].statusunit: count

步骤3:配置监控实例

在"新增监控"页面,选择"Kubernetes"监控类型,填写Kubernetes API Server的地址、端口、认证令牌等信息。

步骤4:验证监控

保存配置后,HertzBeat会开始采集Kubernetes指标。在监控详情页面,可以查看实时指标数据,并配置告警阈值。

Apache HertzBeat通过"无需Agent"的设计,简化了监控系统的部署和维护,同时提供了高性能集群、兼容Prometheus生态、强大的自定义监控和状态页构建能力。这些特性使其成为构建现代监控系统的理想选择。

作为Apache软件基金会孵化项目,HertzBeat将秉承开源精神,持续为社区贡献价值。无论您是初创公司还是大型企业,HertzBeat都能帮助您快速搭建高效、可靠的监控系统,确保业务的稳定运行。

来源:有趣的科技君

相关推荐