Featured image of post HertzBeat 轻量监控告警:国人开源的一体化监控平台

HertzBeat 轻量监控告警:国人开源的一体化监控平台

Dromara HertzBeat 无 Agent 监控、容器化部署、初始账号、配置持久化、Linux/Windows/MySQL/Redis/K8s 监控模板

Prometheus + Grafana + alertmanager + node-exporter 一套拉完,少说 5 个容器、3 份配置、1 个 PromQL 学习成本。如果只是想"监控几十台机器 + 微信告警",杀鸡用了牛刀。Dromara HertzBeat(原 TanCloud)走另一条路——一个容器,监控 + 告警 + 可视化全打包,无 Agent 协议直采(HTTP / SNMP / JDBC / SSH),连 exporter 都不用装。这篇文章讲清楚容器化部署、初始账号、监控模板、配置持久化。

阅读对象:中小团队想"快速搭一套能用"的监控体系、或者觉得 Prometheus 体系太重的同学
覆盖范围:HertzBeat 1.x 容器化部署、初始账号、时区/中文环境、监控模板(Linux/MySQL/Redis/K8s/Windows/SNMP)、告警通知(钉钉/企微/飞书)

一、为什么是 HertzBeat

传统监控方案的痛点:

  • Prometheus 体系:要装 N 个 exporter、PromQL 学习成本、告警要写规则、调仪表盘要懂 PromQL
  • Zabbix:重型、关系数据库后端、UI 古老、容器适配差
  • 夜莺(Nightingale):国产不错但要分 Categraf + n9e + Transfer 多个组件
  • Datadog / New Relic:SaaS、按量计费、数据出境问题

HertzBeat 的设计哲学是"协议直采,零 Agent":

  • HTTP 协议:网站、API、Spring Boot Actuator、K8s API
  • SNMP:路由器、交换机、打印机
  • JDBC:MySQL、PostgreSQL、Oracle、达梦、人大金仓
  • SSH:执行命令采集(CPU/内存/磁盘)
  • JMX:JVM 应用
  • Modbus / OPC-UA:工业协议

一个 Jar 包搞定所有采集、可视化、告警、用户权限。

When to use:中小规模(< 200 监控对象)、要"快速上手"、团队不愿意学 PromQL、想用国产开源规避合规问题。规模再大(1000+ 节点、PB 级时序数据)还是建议回 Prometheus + VictoriaMetrics 体系。

二、容器化部署

2.1 host 网络模式(最简)

1
2
3
4
5
6
7
docker run -d --name hertzbeat \
  --restart=always \
  --net=host \
  -e LANG=zh_CN.UTF-8 \
  -e TZ=Asia/Shanghai \
  -v /home/docker/hertzbeat/data:/opt/hertzbeat/data \
  tancloud/hertzbeat

为什么用 host 网络:HertzBeat 默认监听 1157 端口(Web)、反向连接 agent 时端口动态分配。host 模式省去端口映射的麻烦,也避免一些 SNMP/JMX 协议在 NAT 下的奇怪问题。

2.2 端口映射模式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
docker run -d -p 1157:1157 \
  -e LANG=zh_CN.UTF-8 \
  -e TZ=Asia/Shanghai \
  -v /opt/data:/opt/hertzbeat/data \
  -v /opt/logs:/opt/hertzbeat/logs \
  -v /opt/application.yml:/opt/hertzbeat/config/application.yml \
  -v /opt/sureness.yml:/opt/hertzbeat/config/sureness.yml \
  --restart=always \
  --name hertzbeat \
  tancloud/hertzbeat

挂载配置:生产环境必须application.ymlsureness.yml 挂出来,否则容器一升级配置就丢。HertzBeat 升级会清空容器内 /opt/hertzbeat/data 之外的目录。

2.3 初始账号

访问 http://{{HOST}}:1157/passport/login

  • 默认账号:admin
  • 默认密码:hertzbeat

生产环境:首次登录立即改密码,或在 sureness.yml 里直接配置账号体系(HertzBeat 支持 RBAC 和 LDAP)。

三、添加监控对象

HertzBeat 把"采集什么"封装成"监控模板"——选模板、填 IP/端口/凭据、保存。

3.1 Linux 主机监控(SSH 协议)

监控 → 新建监控 → 选择模板:Linux

  • 主机:填目标 IP
  • 端口:22
  • 用户名/密码:SSH 凭据
  • 监控周期:60s(默认)

保存后 HertzBeat 通过 SSH 上去 cat /proc/statfree -mdf -h 等命令采集指标。

3.2 MySQL 监控(JDBC 协议)

监控 → 新建监控 → 模板:Mysql

  • 主机、端口、数据库、用户名、密码
  • 监控指标:连接数、QPS、慢查询、InnoDB 缓冲池等

3.3 Redis 监控

监控 → 新建监控 → 模板:Redis

  • 支持有密码和无密码两种连接方式
  • 监控内存使用、连接数、命中率、Key 数量

3.4 Kubernetes 监控

监控 → 新建监控 → 模板:Kubernetes

  • 填 K8s API Server 地址 + ServiceAccount Token
  • 自动发现 Pod、Deployment、Node 资源

3.5 网站监控(HTTP 协议)

监控 → 新建监控 → 模板:HTTP_API网站监测

  • 填 URL
  • 选择 HTTP 方法、Header、断言(状态码、响应体关键字)
  • 间隔时间和超时

3.6 SNMP 监控

监控 → 新建监控 → 模板:SNMP

  • 填目标 IP、SNMP community(默认 public)
  • OID 模板自动发现接口、流量

HertzBeat v1.6+ 模板生态:官方维护 100+ 模板(Linux/Windows/MySQL/PostgreSQL/Redis/MongoDB/Elasticsearch/Kafka/ZK/Nginx/Apache/Docker/交换机/路由器/…),基本覆盖了常见监控对象。社区也持续贡献新模板。

四、告警通知

HertzBeat 支持多种通知渠道(告警 → 通知媒介):

渠道适用
钉钉机器人国内团队首选
企业微信机器人国内团队
飞书机器人字节系团队
Slack海外
邮件通用
Webhook自定义系统对接
Telegram / Discord海外

钉钉告警示例

告警 → 通知媒介 → 新增 → 钉钉机器人

  • 名称:DingTalk-Alert
  • Webhook URL:https://oapi.dingtalk.com/robot/send?access_token={{TOKEN}}
  • 关键字:自定义

告警 → 告警定义 → 新增规则

  • 选择监控对象
  • 指标:cpu_usage
  • 表达式:cpu_usage > 80
  • 持续时间:5 分钟
  • 通知媒介:DingTalk-Alert

告警收敛:HertzBeat 支持"标签路由 + 抑制规则",避免同一时刻同一原因触发几十条告警。

五、可视化

HertzBeat 内部集成了图表(基于 ECharts),可以:

  • 单个监控对象查看历史曲线(CPU、内存、磁盘、QPS 等)
  • 多个监控对象叠到同一张图对比
  • 创建 Dashboard 把常用图钉到首页

Grafana 不是 HertzBeat 的依赖。HertzBeat 自己就有完整的可视化能力。如果团队已经在用 Grafana + Prometheus,HertzBeat 也可以通过 /api/metrics 端点把数据暴露出去给 Prometheus 抓取(“反向对接”)。

六、踩坑清单

  1. SSH 监控拿不到数据——目标机器没装 bc 命令(cat /proc/loadavg 的格式化用到),或 ~/.bashrc 里有 prompt 输出
  2. MySQL 监控 “Access denied”——MySQL 8 默认 caching_sha2_password 认证插件,HertzBeat 旧版本只支持 mysql_native_password,要么改用户认证插件,要么升级 HertzBeat
  3. SNMP 监控返回 timeout——目标设备防火墙/ACL 拦截了 UDP 161,或者 community 不对
  4. 数据目录丢失——升级前没挂载 /opt/hertzbeat/data,容器销毁后所有监控配置清零
  5. 告警收不到——先在 告警 → 告警中心 看历史告警有没有触发,再检查通知媒介的 webhook 是否能 curl 通
  6. 中文乱码——LANG=zh_CN.UTF-8 没设,或者容器内字体不全,加 -v /usr/share/fonts:/usr/share/fonts:ro

七、2024+ 视角补充

本文写于 2024-03,2025-2026 期间 HertzBeat 关键演进:

  • HertzBeat 1.7+ / 1.8+AI 异常检测(内置时序异常识别)、智能告警降噪(关联分析)、自研存储引擎 v2——单机监控 1000+ 节点
  • Cloud Native 化:1.7+ 推出 HertzBeat Operator(K8s Operator 模式),CRD 管理监控对象
  • 告警通知生态完善:1.8+ 内置 PagerDuty / Opsgenie / Slack / 钉钉 / 企微 / 飞书——oncall 集成开箱即用
  • 多语言 / 多协议:1.8+ 模板数 200+(新增 Modbus / OPC-UA / IEC104 工业协议——工控监控更专业)
  • 多租户 / 团队权限:1.7+ RBAC 增强,从"全局管理员"到"组织 / 项目 / 视图"三级权限
  • 时序数据库后端可选:1.8+ 支持 VictoriaMetrics / InfluxDB / TDengine 作为存储后端,不再绑定 H2 / 内置 TSDB

实战建议(2025-2026 视角)

  • 中小规模 / 国产化 → HertzBeat 1.8+ 仍是首选(vs Prometheus 体系仍更轻量)
  • 大规模(1000+ 节点) → 建议 HertzBeat + VictoriaMetrics 组合
  • 工控 / IoT 场景 → HertzBeat 1.8+ 工业协议完善,vs 传统 Zabbix 优势明显
  • K8s 集群 → 仍推荐 kube-prometheus-stack(生态成熟度 HertzBeat 暂不如)

八、参考资料

  • HertzBeat 官网:https://hertzbeat.com
  • 文档中心:https://hertzbeat.com/docs/
  • GitHub 仓库:https://github.com/dromara/hertzbeat
  • 模板中心:https://hertzbeat.com/docs/template

下一步

使用 Hugo 构建
主题 StackJimmy 设计