HertzBeat 监控系统(服务器在线状态)部署与配置完整操作手册
HertzBeat 监控系统部署与配置完整操作手册
适用环境:Windows 10/11 (WSL2) + Docker Desktop
监控目标:Linux 服务器、Windows 服务器、网络设备、数据库等
告警方式:邮件、钉钉、企业微信、飞书
手册版本:v3.0(完整实操版)
第一章:环境准备
1.1 系统要求检查
Step 1:检查 Windows 版本
以管理员身份打开 PowerShell,执行:
winver
预期结果:弹出窗口显示系统版本。要求 Windows 10 版本 2004 (Build 19041) 或更高,或 Windows 11。
Step 2:检查虚拟化是否开启
systeminfo | Select-String "Hyper-V", "虚拟化", "Virtualization"
预期结果:输出中应包含“虚拟化已在固件中启用: 是”。若显示“否”,需重启电脑进入 BIOS/UEFI 开启 Intel VT-x 或 AMD-V。
Step 3:检查内存
Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum | ForEach-Object { [math]::Round($_.Sum / 1GB, 2) }
预期结果:建议 8GB 以上,最低 4GB。
| 问题 | 处理 |
|---|---|
| 系统版本过低 | 升级 Windows 到最新版本 |
| 虚拟化未开启 | 重启进入 BIOS 开启 VT-x/AMD-V |
| 内存不足 | 关闭不必要程序,或增加物理内存 |
1.2 安装 WSL2
Step 1:以管理员身份打开 PowerShell
Step 2:执行安装命令
wsl --install
预期结果:自动下载并安装 WSL2 及 Ubuntu,然后提示重启电脑。
Step 3:如果 wsl --install 报错
尝试:
winget install --id Microsoft.WSL -e
或:
wsl --list --online
wsl --install -d Ubuntu-24.04
Step 4:重启电脑
Step 5:重启后验证
wsl --version
wsl -l -v
预期结果:wsl -l -v 显示 Ubuntu-24.04,VERSION 列为 2。
| 问题 | 处理 |
|---|---|
| 报“灾难性故障” | 尝试 winget install --id Microsoft.WSL -e,然后重启 |
| WSL 版本为 1 | 执行 wsl --set-version Ubuntu-24.04 2 |
| 下载卡在 0.0% | 执行 wsl --install --web-download -d Ubuntu-24.04 |
Step 6:安装 Ubuntu 到 D 盘(可选)
New-Item -ItemType Directory -Force -Path "D:\Software Tool\WSL\Ubuntu-24.04"
wsl --install Ubuntu-24.04 --location "D:\Software Tool\WSL\Ubuntu-24.04"
首次启动会要求创建 Linux 用户名和密码,按提示操作。
第二章:安装 Docker Desktop
2.1 下载安装包
访问 https://www.docker.com/products/docker-desktop/ ,选择 Windows (AMD64) 版下载,保存到 D:\Software Tool\Download\Docker Desktop Installer.exe。
2.2 安装到 D 盘
以管理员身份打开 PowerShell:
Start-Process -Wait -FilePath "D:\Software Tool\Download\Docker Desktop Installer.exe" -ArgumentList "install -accept-license --installation-dir=D:\Docker --wsl-default-data-root=D:\Docker\WSL --windows-containers-default-data-root=D:\Docker\WindowsContainers"
| 参数 | 含义 |
|---|---|
--installation-dir=D:\Docker |
Docker 主程序安装目录 |
--wsl-default-data-root=D:\Docker\WSL |
Docker 的 WSL 数据存储目录 |
--windows-containers-default-data-root=D:\Docker\WindowsContainers |
Windows 容器数据存储目录 |
重启电脑。
2.3 启动并验证
- 从开始菜单启动 Docker Desktop
- 首次启动跳过登录提示
- 等待任务栏右下角鲸鱼图标稳定(不再转圈)
- 重新打开 PowerShell,验证:
docker --version
docker info
预期结果:docker info 正常输出 Server 版本、容器数等信息,不报连接错误。
2.4 配置 WSL 集成
- Docker Desktop →
Settings→Resources→WSL Integration - 确保 Ubuntu-24.04 已被勾选
- 点击
Apply & Restart
2.5 配置镜像加速(国内网络建议)
Docker Desktop → Settings → Docker Engine,加入:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://mirror.baidubce.com"
]
}
点击 Apply & Restart。
| 问题 | 处理 |
|---|---|
| Docker Desktop 启动慢 | 首次启动需初始化 WSL 后端,等 3-5 分钟 |
| 鲸鱼图标红色 | WSL 集成异常,检查 WSL Integration 是否勾选 |
docker info 报连接错误 |
确认 Docker Desktop 已启动,等鲸鱼图标稳定 |
第三章:部署 HertzBeat
3.1 创建本地目录
New-Item -ItemType Directory -Force -Path "D:\Software Tool\HertzBeat\config"
New-Item -ItemType Directory -Force -Path "D:\Software Tool\HertzBeat\data"
New-Item -ItemType Directory -Force -Path "D:\Software Tool\HertzBeat\logs"
3.2 启动容器(完整持久化挂载)
docker run -d `
-p 1157:1157 -p 1158:1158 `
--name hertzbeat `
--restart always `
-e HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE=auto `
-v "D:\Software Tool\HertzBeat\data:/opt/hertzbeat/data" `
-v "D:\Software Tool\HertzBeat\logs:/opt/hertzbeat/logs" `
-v "D:\Software Tool\HertzBeat\config/application.yml:/opt/hertzbeat/config/application.yml" `
-v "D:\Software Tool\HertzBeat\config/sureness.yml:/opt/hertzbeat/config/sureness.yml" `
apache/hertzbeat
容器参数详解:
| 参数 | 含义 |
|---|---|
-d |
后台运行容器 |
-p 1157:1157 |
Web UI 端口映射(页面端口) |
-p 1158:1158 |
集群/采集器端口映射 |
--name hertzbeat |
容器名称 |
--restart always |
Docker 启动后容器自动运行 |
-e HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE=auto |
MySQL 兼容监控查询链路(可选值:auto、jdbc、r2dbc) |
-v ...data |
数据持久化,挂载数据库文件到本地主机,保证数据不会因为容器的创建删除而丢失 |
-v ...logs |
日志持久化,方便本地查看 |
-v ...application.yml |
挂载配置文件到容器中 |
-v ...sureness.yml |
挂载账户配置文件到容器中 |
注意:挂载文件时,请确保本地已有
application.yml和sureness.yml文件。可从以下地址下载:
3.3 验证启动
docker ps
预期结果:看到 hertzbeat 容器,状态为 Up,端口映射为 0.0.0.0:1157-1158->1157-1158/tcp。
docker logs --tail 50 hertzbeat
预期结果:看到 Started HertzBeatApplication in xxx seconds,约需 1-2 分钟。
3.4 访问 Web UI
浏览器打开 http://127.0.0.1:1157。
默认账号密码:
| 用户名 | 密码 |
|---|---|
| admin | hertzbeat |
| tom | hertzbeat |
| guest | hertzbeat |
| 问题 | 处理 |
|---|---|
| 容器状态 Exited | docker logs hertzbeat 查看错误 |
| 端口被占用 | netstat -ano | findstr :1157 查占用进程 |
| 浏览器打不开 | 手动输入 http://127.0.0.1:1157,强制 http,换浏览器试 |
第四章:修改 admin 密码
4.1 编辑 sureness.yml
notepad "D:\Software Tool\HertzBeat\config\sureness.yml"
找到 account: 段,只修改 admin 的 credential:
account:
- appId: admin
credential: "你的新密码"
role: [admin]
- appId: tom
credential: hertzbeat
role: [user]
- appId: guest
credential: hertzbeat
role: [guest]
注意事项:
- 只改
admin那一条的credential - YAML 对缩进敏感,别动缩进,只改冒号后面的值
- 密码含特殊字符建议用引号包起来
- 保存时编码选 UTF-8
4.2 重启容器
docker restart hertzbeat
等待 1-2 分钟,用新密码登录。
⚠️ 安全提醒:默认密码
hertzbeat必须在暴露服务到任何不受信任网络之前修改。
第五章:配置邮件通知
5.1 获取邮箱授权码
以腾讯企业邮箱为例:
- 登录网页版邮箱
- 进入 设置 → 邮箱绑定
- 开启 安全登录
- 点击 生成新密码,得到 16 位客户端专用密码
- 立即复制并保存,关闭窗口后无法再次查看
⚠️ 授权码等同于密码,切勿泄露到对话、代码仓库或公开渠道。
5.2 编辑 application.yml
notepad "D:\Software Tool\HertzBeat\config\application.yml"
找到 spring: 下的 mail: 部分(通常在 on-profile: prod 下方),修改为:
mail:
host: smtp.exmail.qq.com
username: gaoxing@teamway.org.cn
password: "你的新授权码"
port: 465
properties:
mail:
smtp:
socketFactoryClass: javax.net.ssl.SSLSocketFactory
ssl:
enable: true
starttls:
enable: false
HertzBeat 邮件告警配置项说明:
| 配置项 | 说明 | 默认值 |
|---|---|---|
spring.mail.username |
SMTP 用户名 | - |
spring.mail.password |
SMTP 密码(授权码,非登录密码) | your-password |
spring.mail.host |
SMTP 服务器地址 | smtp.qq.com |
spring.mail.port |
SMTP 端口 | 465 |
spring.mail.properties.mail.smtp.socketFactoryClass |
SSL Socket 工厂类 | - |
常见邮箱配置:
| 邮箱 | host | port | 加密方式 |
|---|---|---|---|
| 腾讯企业邮 | smtp.exmail.qq.com | 465 | SSL |
| QQ邮箱 | smtp.qq.com | 465 | SSL |
| 163邮箱 | smtp.163.com | 465 | SSL |
| Gmail | smtp.gmail.com | 587 | STARTTLS |
保存文件。
5.3 重启容器
docker restart hertzbeat
等待 1-2 分钟。
5.4 测试邮件通道
- HertzBeat →
告警→通知媒介 - 编辑“企业邮箱”
- 点击 发送告警测试
预期结果:右上角提示“触发告警测试成功!”,邮箱收到测试邮件。
⚠️ 重要:新增了接收人并不代表已经生效可以接收告警信息,还需配置关联的告警通知策略,即指定哪些消息发给哪些接收人。
| 问题 | 处理 |
|---|---|
报 Authentication failed |
授权码错误或未生效,重新生成授权码,确认配置文件已挂载 |
| 提示成功但收不到 | 检查垃圾邮件箱、已发送记录 |
| 连接超时 | 检查容器网络:docker exec -it hertzbeat ping smtp.exmail.qq.com |
第六章:添加监控对象
6.1 添加 Linux 服务器
操作路径:监控中心 → 新增监控 → 操作系统监控 → Linux操作系统
配置参数:
| 字段 | 填写 | 说明 |
|---|---|---|
| 监控Host | 服务器 IP(如 10.0.32.217) | 不带协议头(eg: https://, http://) |
| 任务名称 | 自定义唯一名称 | 标识此监控的名称,需保证唯一性 |
| 端口 | SSH 端口,默认 22 | Linux SSH 对外提供的端口 |
| 超时时间 | 默认 6000 毫秒 | 连接的超时时间,单位 ms |
| 复用连接 | 默认 false | 为 false 每次获取信息都会创建一个连接 |
| 用户名 | SSH 登录用户 | SSH 连接用户名,可选 |
| 密码 | SSH 密码 | SSH 连接密码,可选 |
| 采集器 | 默认 | 配置此监控使用哪台采集器调度采集 |
| 监控周期 | 30-60秒 | 监控周期性采集数据间隔时间,最小 30 秒 |
| 绑定标签 | 如 env=prod |
用于对监控资源进行分类管理 |
| 描述备注 | 自定义 | 更多标识和描述此监控的备注信息 |
采集指标说明:
| 指标集合 | 指标名称 | 说明 |
|---|---|---|
| 系统基本信息 | hostname, version, uptime | 主机名、OS版本、启动时间 |
| CPU 信息 | info, cores, load, usage | CPU型号、核心数、负载、使用率 |
| 内存信息 | total, used, free, usage | 总内存、已用、空闲、使用率 |
| 磁盘信息 | disk_num, partition_num, write_rate | 磁盘总数、分区数、写入速率 |
| 网卡信息 | interface_name, receive_bytes, transmit_bytes | 网卡名称、入站/出站流量 |
| 文件系统 | filesystem, used, available, usage | 文件系统名称、已用、可用、使用率 |
| Top10 CPU进程 | 进程ID、CPU占用率、内存占用率 | 统计进程使用CPU的Top10 |
6.2 添加 Windows 服务器
操作路径:监控中心 → 新增监控 → Windows操作系统
采集协议:SNMP
⚠️ 注意:Windows 服务器需开启 SNMP 服务。
配置参数:
| 字段 | 填写 | 说明 |
|---|---|---|
| 监控Host | 服务器 IP | 不带协议头 |
| 任务名称 | 自定义唯一名称 | 标识此监控的名称 |
| 端口 | 默认 161 | Windows SNMP 服务对外提供的端口 |
| SNMP 版本 | V1/V2c/V3 | SNMP 协议版本 |
| SNMP 团体字 | 默认 public | 类似于密码,用于身份验证 |
| 采集间隔 | 30-60秒 | 最小 30 秒 |
| 是否探测 | 建议开启 | 新增监控前先探测检查可用性 |
6.3 添加其他类型
| 类型 | 采集协议 | 关键参数 |
|---|---|---|
| 网络设备 | SNMP | IP、SNMP 版本、Community / v3 凭据 |
| MySQL | JDBC | IP、端口、账号、密码 |
| Redis | Redis 协议 | IP、端口、密码 |
| HTTP API | HTTP/HTTPS | URL、方法、期望状态码 |
| 问题 | 处理 |
|---|---|
| 状态一直异常 | 检查目标服务器 SSH 服务、防火墙、网络连通性 |
| 看不到数据 | 检查账号密码是否正确,是否有权限 |
| 连接超时 | telnet <目标IP> 22 测试端口连通性 |
第七章:配置阈值规则(告警条件)
7.1 创建实时阈值规则
操作路径:告警 → 阈值规则 → 新增阈值 → 选择 实时告警 → 选择数据类型(监控指标/日志数据)
7.2 服务器离线告警配置
| 字段 | 填写 | 说明 |
|---|---|---|
| 阈值名称 | 服务器离线告警 | 定义此阈值规则的唯一名称 |
| 数据类型 | 指标 | 选择监控指标或日志数据 |
| 指标类型 | Linux操作系统 / 监控可用性 |
选择需要配置阈值的监控指标对象 |
| 阈值规则 | 异常时触发告警 | 配置具体指标的告警触发规则 |
| 最终总表达式 | equals(__app__,"linux") && equals(__available__,"down") |
支持图形界面和表达式规则 |
| 关联监控 | 可留空或指定监控 | 应用此阈值规则到指定的监控对象 |
| 告警级别 | 紧急告警 | 从低到高:警告-warning,严重-critical,紧急-emergency |
| 触发次数 | 3 | 设置触发阈值多少次之后才会真正触发告警 |
| 告警内容 | 监控实例: ${__instancename__}当前状态: 离线告警主机: ${__instanceHost__} |
告警触发后发送的通知信息模板 |
| 绑定标签 | severity : emergency |
给此阈值规则附加标签,告警时附加到告警上 |
| 启用阈值 | 开启 | 此告警阈值配置开启生效或关闭 |
7.3 阈值触发表达式语法
HertzBeat 使用 JEXL (Java Expression Language) 表达式。
支持的操作符:
| 操作符 | 说明 | 示例 |
|---|---|---|
> |
大于 | responseTime > 400 |
>= |
大于等于 | cpuUsage >= 80 |
< |
小于 | free < 100 |
<= |
小于等于 | usage <= 90 |
== |
等于 | status == "down" |
!= |
不等于 | state != "OK" |
equals() |
字符串等于 | equals(log.level,"ERROR") |
contains() |
包含 | contains(log.attributes.hostname,"server-01") |
&& |
逻辑与 | cpuUsage > 80 && memoryUsage > 85 |
|| |
逻辑或 | cpuUsage > 90 || load > 10 |
常用表达式示例:
- 响应时间大于等于 400ms:
responseTime >= 400 - 线程数量大于 300:
equals(state,"runnable") && size > 300 - 日志级别为 ERROR:
equals(log.level,"ERROR") - 可用性低于 100% 告警:
availability < 100 ? 'ALERT' : 'OK'
7.4 常用阈值规则参考
| 规则名称 | 指标类型 | 表达式 | 级别 | 触发次数 |
|---|---|---|---|---|
| 服务器离线 | Linux / 监控可用性 | equals(__app__,"linux") && equals(__available__,"down") |
紧急 | 3 |
| CPU过高 | Linux / CPU信息 | cpuUsage > 80 |
警告 | 3 |
| 内存过高 | Linux / 内存信息 | memoryUsage > 85 |
警告 | 3 |
| 磁盘过高 | Linux / 磁盘信息 | diskUsage > 80 |
警告 | 3 |
7.5 可用环境变量
| 变量 | 说明 |
|---|---|
${__instance__} |
实例 ID |
${__labels__} |
标签 |
${__instancename__} |
实例名称 |
${__instanceHost__} |
实例 Host |
${__app__} |
应用类型 |
${__metrics__} |
指标名称 |
第八章:配置通知策略
8.1 创建通知策略
操作路径:告警 → 通知策略 → 新增通知策略
| 字段 | 填写 | 说明 |
|---|---|---|
| 策略名称 | 服务器告警通知 | 自定义名称,必须唯一 |
| 接收对象 | 企业邮箱 | 选择已配置的接收对象 |
| 通知模板 | 系统内置模版 | 默认即可 |
| 转发所有 | 开启 | 全局转发,所有告警走此策略 |
| 时间周期 | 无限制 | 全天候允许发送 |
| 通知时段 | 00:00 - 23:59 | 覆盖全天 |
| 启用状态 | 开启 | 必须开启 |
⚠️ 重要:新增了接收人并不代表已经生效可以接收告警信息,还需配置关联的告警通知策略,即指定哪些消息发给哪些接收人。
8.2 告警处理管线说明
HertzBeat 的告警处理经过多阶段管线:
- Group Converge:分组和去重,减少通知量
- Alert Inhibit:告警抑制,避免级联告警风暴
- Alert Silence:告警静默,按时间段静默
- Time Tags:时间标签,附加时间信息
第九章:验证告警链路
9.1 推荐方法:改 IP 模拟离线
操作步骤:
- 进入
监控中心,编辑目标监控 - 将 目标Host 临时改为不存在的地址(如
10.0.32.999) - 保存
- 等待 3-5 分钟(触发次数 = 3)
- 观察:
告警中心出现“服务器离线告警”- 邮箱收到离线告警邮件
- 测试完成后,将 Host 改回原地址
- 等待 1-2 分钟,确认状态恢复“正常”,并收到“告警恢复”邮件
9.2 真实离线测试(可选)
- 云服务器:从控制台停止实例 → 等告警 → 开机
- 物理机/虚拟机:确认有带外管理或现场支持 → 关机 → 开机
- 不想关机:临时封禁 HertzBeat 源 IP 的 22 端口(需先确认源 IP、设置自动恢复)
⚠️ 生产环境操作前必须确认影响范围、审批、备份、回滚方案。
9.3 告警延迟估算
总延迟 ≈ 采集间隔 × 触发次数 + 分组等待 + 邮件发送
| 采集间隔 | 触发次数 | 预计收到邮件时间 |
|---|---|---|
| 30秒 | 2次 | 1.5 - 2 分钟 |
| 60秒 | 3次 | 3.5 - 4.5 分钟 |
| 120秒 | 3次 | 6.5 - 7.5 分钟 |
第十章:数据持久化与备份
10.1 已挂载目录
| 本地路径 | 容器路径 | 内容 | 重要性 |
|---|---|---|---|
D:\Software Tool\HertzBeat\data |
/opt/hertzbeat/data |
数据库文件(H2) | 必须挂载,否则容器删除数据丢失 |
D:\Software Tool\HertzBeat\logs |
/opt/hertzbeat/logs |
运行日志 | 可选,方便查看 |
D:\Software Tool\HertzBeat\config\application.yml |
/opt/hertzbeat/config/application.yml |
主配置 | 可选,挂载后可直接编辑 |
D:\Software Tool\HertzBeat\config\sureness.yml |
/opt/hertzbeat/config/sureness.yml |
账户配置 | 可选,挂载后可直接编辑 |
10.2 备份操作
升级前必须备份:
# 停止容器
docker stop hertzbeat
# 备份数据目录
Copy-Item -Path "D:\Software Tool\HertzBeat\data" -Destination "D:\Backup\HertzBeat\data-$(Get-Date -Format 'yyyyMMdd')" -Recurse -Force
# 备份配置
Copy-Item -Path "D:\Software Tool\HertzBeat\config" -Destination "D:\Backup\HertzBeat\config-$(Get-Date -Format 'yyyyMMdd')" -Recurse -Force
# 启动容器
docker start hertzbeat
10.3 修改配置的正确姿势
- 直接在 Windows 上编辑
D:\Software Tool\HertzBeat\config\下的文件 - 执行
docker restart hertzbeat - 等待 1-2 分钟生效
第十一章:故障排查手册
11.1 常用排查命令
# 查看容器状态
docker ps -a
# 查看容器日志
docker logs --tail 100 hertzbeat
# 实时查看日志
docker logs -f hertzbeat
# 查看邮件相关错误
docker logs --tail 200 hertzbeat | findstr /i "mail smtp auth error"
# 查看容器内配置文件
docker exec -it hertzbeat cat /opt/hertzbeat/config/application.yml | findstr /i "host username password port"
# 测试容器到 SMTP 连通性
docker exec -it hertzbeat ping smtp.exmail.qq.com
# 进入容器
docker exec -it hertzbeat /bin/bash
# 查看容器资源占用
docker stats hertzbeat
11.2 常见问题速查
| 现象 | 可能原因 | 处理 |
|---|---|---|
docker 命令找不到 |
Docker Desktop 未启动或 PATH 未刷新 | 启动 Docker Desktop,重开 PowerShell |
| 容器启动后无法访问 1157 | 防火墙拦截、端口未映射 | 检查 docker ps 端口映射,关闭防火墙测试 |
页面反馈 monitor.host 错误 |
Host 带了协议头 | Host 必须是 ipv4/ipv6/域名,不能携带 http:// 等协议头 |
邮件测试报 Authentication failed |
授权码错误或未生效 | 重新生成授权码,确认配置文件已挂载,重启容器 |
| 邮件测试成功但收不到 | 被垃圾邮件拦截 | 检查垃圾箱、已发送记录 |
| 告警中心无记录 | 阈值规则未启用、表达式错误 | 检查阈值规则配置,确认“启用”开启 |
| 告警中心有记录但无邮件 | 通知策略未启用、转发所有未开 | 检查通知策略配置 |
| 监控状态异常 | SSH 账号密码错误、端口不通 | 检查目标服务器 SSH 配置、网络连通性 |
| 端口 1157 被占用 | 其他程序占用端口 | netstat -ano | findstr :1157 查占用进程,日志会报 Address already in use: bind |
| 容器退出代码 1 | 环境配置或依赖问题 | docker logs <容器ID> 获取详细错误,检查 JDK 版本(需 JDK 11+) |
11.3 日志分析要点
| 日志关键词 | 含义 | 处理 |
|---|---|---|
Authentication failed |
授权码错误或已失效 | 重新生成授权码 |
Connection refused / timeout |
无法连接到 SMTP 服务器 | 检查容器网络、DNS、防火墙 |
SSLHandshakeException |
SSL 配置不匹配 | 检查端口和 SSL 设置 |
Started HertzBeatApplication |
启动完成 | 可以访问 UI |
OutOfMemoryError |
内存不足 | 调大 Docker 内存分配 |
SQL statement too long |
需要调整 maxSQLLength 配置 | 调整 TDengine 配置 |
Address already in use |
端口冲突 | 修改主机映射端口或释放被占用端口 |
第十二章:安全建议
- 修改默认密码:admin 密码必须修改为强密码
- 修改 JWT Secret:生产环境必须修改默认 JWT Secret
- 授权码保密:邮箱授权码、SSH 密码、API 密钥不要泄露
- 限制访问来源:HertzBeat 的 1157 端口不要暴露到公网,仅限内网或 VPN 访问
- 最小权限原则:监控用的 SSH 账号建议使用专用只读账号,不要用 root
- 定期更新:关注 HertzBeat 版本更新,及时升级
- 监控自身:用另一套轻量工具(如 Uptime Kuma)监控 HertzBeat 是否在线
- 密码类字段:密码类字段严禁明文硬编码,应结合 Spring Boot Config Server、HashiCorp Vault 或 Jasypt 加密库实现密文存储
第十三章:后续优化建议
13.1 迁移到常开服务器
当前 HertzBeat 运行在个人 Windows 电脑上,电脑关机/休眠会导致监控中断。生产环境建议迁移到 7×24 常开的 Linux 服务器:
docker run -d --name hertzbeat \
-p 1157:1157 -p 1158:1158 \
--restart always \
-v /opt/hertzbeat/data:/opt/hertzbeat/data \
-v /opt/hertzbeat/logs:/opt/hertzbeat/logs \
-v /opt/hertzbeat/config/application.yml:/opt/hertzbeat/config/application.yml \
-v /opt/hertzbeat/config/sureness.yml:/opt/hertzbeat/config/sureness.yml \
apache/hertzbeat
13.2 使用标签分组
- 给服务器打标签:
env=prod、type=algorithm、region=shenzhen - 阈值规则按标签关联,新服务器自动继承规则
- 标签可用于告警分组和路由
13.3 分级告警
| 服务器类型 | 采集间隔 | 触发次数 |
|---|---|---|
| 核心服务器 | 30秒 | 2次 |
| 非核心服务器 | 60-120秒 | 3次 |
13.4 定期演练
每月挑一台测试机模拟离线,确认告警链路仍然通畅。
附录A:本次实操路径汇总
| 项目 | 路径 |
|---|---|
| WSL Ubuntu | D:\Software Tool\WSL\Ubuntu-24.04 |
| Docker 安装 | D:\Docker |
| HertzBeat 配置 | D:\Software Tool\HertzBeat\config |
| HertzBeat 数据 | D:\Software Tool\HertzBeat\data |
| HertzBeat 日志 | D:\Software Tool\HertzBeat\logs |
| Web UI | http://127.0.0.1:1157 |
| 默认账号 | admin / hertzbeat(首次登录后修改) |
附录B:常用 Docker 命令速查
# 启动 HertzBeat
docker start hertzbeat
# 停止 HertzBeat
docker stop hertzbeat
# 重启 HertzBeat
docker restart hertzbeat
# 查看日志
docker logs -f hertzbeat
# 进入容器
docker exec -it hertzbeat /bin/bash
# 删除容器(数据保留在挂载目录)
docker rm -f hertzbeat
# 查看容器资源占用
docker stats hertzbeat
# 更新容器自动重启策略
docker update --restart=always hertzbeat
附录C:HertzBeat 容器端口说明
| 端口 | 用途 |
|---|---|
| 1157 | Web UI 页面端口 |
| 1158 | 集群/采集器端口 |
| 14317 | OTLP/gRPC 摄入监听端口(启用 Greptime 存储时启动) |
| 8428 | VictoriaMetrics 端口(启用时) |
| 6041 | TDengine RESTful 端口(启用时) |
浙公网安备 33010602011771号