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-StringHyper-V,虚拟化,Virtualization预期结果输出中应包含“虚拟化已在固件中启用: 是”。若显示“否”需重启电脑进入 BIOS/UEFI 开启 Intel VT-x 或 AMD-V。Step 3检查内存Get-CimInstanceWin32_PhysicalMemory|Measure-Object-Property Capacity-Sum|ForEach-Object{[math]::Round($_.Sum/1GB,2)}预期结果建议 8GB 以上最低 4GB。问题处理系统版本过低升级 Windows 到最新版本虚拟化未开启重启进入 BIOS 开启 VT-x/AMD-V内存不足关闭不必要程序或增加物理内存1.2 安装 WSL2Step 1以管理员身份打开 PowerShellStep 2执行安装命令wsl--install预期结果自动下载并安装 WSL2 及 Ubuntu然后提示重启电脑。Step 3如果wsl --install报错尝试winget install--id Microsoft.WSL-e或wsl--list--online wsl--install-d Ubuntu-24.04Step 4重启电脑Step 5重启后验证wsl--version wsl-l-v预期结果wsl -l -v显示 Ubuntu-24.04VERSION 列为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.04Step 6安装 Ubuntu 到 D 盘可选New-Item-ItemType Directory-Force-PathD:\Software Tool\WSL\Ubuntu-24.04wsl--install Ubuntu-24.04--locationD:\Software Tool\WSL\Ubuntu-24.04首次启动会要求创建 Linux 用户名和密码按提示操作。第二章安装 Docker Desktop2.1 下载安装包访问 https://www.docker.com/products/docker-desktop/ 选择Windows (AMD64)版下载保存到D:\Software Tool\Download\Docker Desktop Installer.exe。2.2 安装到 D 盘以管理员身份打开 PowerShellStart-Process-Wait-FilePathD:\Software Tool\Download\Docker Desktop Installer.exe-ArgumentListinstall -accept-license --installation-dirD:\Docker --wsl-default-data-rootD:\Docker\WSL --windows-containers-default-data-rootD:\Docker\WindowsContainers参数含义--installation-dirD:\DockerDocker 主程序安装目录--wsl-default-data-rootD:\Docker\WSLDocker 的 WSL 数据存储目录--windows-containers-default-data-rootD:\Docker\WindowsContainersWindows 容器数据存储目录重启电脑。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 Restart2.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 已启动等鲸鱼图标稳定第三章部署 HertzBeat3.1 创建本地目录New-Item-ItemType Directory-Force-PathD:\Software Tool\HertzBeat\configNew-Item-ItemType Directory-Force-PathD:\Software Tool\HertzBeat\dataNew-Item-ItemType Directory-Force-PathD:\Software Tool\HertzBeat\logs3.2 启动容器完整持久化挂载docker run-d -p 1157:1157-p 1158:1158 --name hertzbeat --restart always -e HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINEauto -vD:\Software Tool\HertzBeat\data:/opt/hertzbeat/data-vD:\Software Tool\HertzBeat\logs:/opt/hertzbeat/logs-vD:\Software Tool\HertzBeat\config/application.yml:/opt/hertzbeat/config/application.yml-vD:\Software Tool\HertzBeat\config/sureness.yml:/opt/hertzbeat/config/sureness.yml apache/hertzbeat容器参数详解参数含义-d后台运行容器-p 1157:1157Web UI 端口映射页面端口-p 1158:1158集群/采集器端口映射--name hertzbeat容器名称--restart alwaysDocker 启动后容器自动运行-e HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINEautoMySQL 兼容监控查询链路可选值auto、jdbc、r2dbc-v ...data数据持久化挂载数据库文件到本地主机保证数据不会因为容器的创建删除而丢失-v ...logs日志持久化方便本地查看-v ...application.yml挂载配置文件到容器中-v ...sureness.yml挂载账户配置文件到容器中注意挂载文件时请确保本地已有application.yml和sureness.yml文件。可从以下地址下载application.yml: https://github.com/apache/hertzbeat/raw/master/script/application.ymlsureness.yml: https://github.com/apache/hertzbeat/raw/master/script/sureness.yml3.3 验证启动dockerps预期结果看到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。默认账号密码用户名密码adminhertzbeattomhertzbeatguesthertzbeat问题处理容器状态 Exiteddocker logs hertzbeat查看错误端口被占用netstat -ano | findstr :1157查占用进程浏览器打不开手动输入http://127.0.0.1:1157强制 http换浏览器试第四章修改 admin 密码4.1 编辑 sureness.ymlnotepadD:\Software Tool\HertzBeat\config\sureness.yml找到account:段只修改admin的credentialaccount:-appId:admincredential:你的新密码role:[admin]-appId:tomcredential:hertzbeatrole:[user]-appId:guestcredential:hertzbeatrole:[guest]注意事项只改admin那一条的credentialYAML 对缩进敏感别动缩进只改冒号后面的值密码含特殊字符建议用引号包起来保存时编码选UTF-84.2 重启容器docker restart hertzbeat等待 1-2 分钟用新密码登录。⚠️安全提醒默认密码hertzbeat必须在暴露服务到任何不受信任网络之前修改。第五章配置邮件通知5.1 获取邮箱授权码以腾讯企业邮箱为例登录网页版邮箱进入设置→邮箱绑定开启安全登录点击生成新密码得到 16 位客户端专用密码立即复制并保存关闭窗口后无法再次查看⚠️授权码等同于密码切勿泄露到对话、代码仓库或公开渠道。5.2 编辑 application.ymlnotepadD:\Software Tool\HertzBeat\config\application.yml找到spring:下的mail:部分通常在on-profile: prod下方修改为mail:host:smtp.exmail.qq.comusername:gaoxingteamway.org.cnpassword:你的新授权码port:465properties:mail:smtp:socketFactoryClass:javax.net.ssl.SSLSocketFactoryssl:enable:truestarttls:enable:falseHertzBeat 邮件告警配置项说明配置项说明默认值spring.mail.usernameSMTP 用户名-spring.mail.passwordSMTP 密码授权码非登录密码your-passwordspring.mail.hostSMTP 服务器地址smtp.qq.comspring.mail.portSMTP 端口465spring.mail.properties.mail.smtp.socketFactoryClassSSL Socket 工厂类-常见邮箱配置邮箱hostport加密方式腾讯企业邮smtp.exmail.qq.com465SSLQQ邮箱smtp.qq.com465SSL163邮箱smtp.163.com465SSLGmailsmtp.gmail.com587STARTTLS保存文件。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 端口默认 22Linux SSH 对外提供的端口超时时间默认 6000 毫秒连接的超时时间单位 ms复用连接默认 false为 false 每次获取信息都会创建一个连接用户名SSH 登录用户SSH 连接用户名可选密码SSH 密码SSH 连接密码可选采集器默认配置此监控使用哪台采集器调度采集监控周期30-60秒监控周期性采集数据间隔时间最小 30 秒绑定标签如envprod用于对监控资源进行分类管理描述备注自定义更多标识和描述此监控的备注信息采集指标说明指标集合指标名称说明系统基本信息hostname, version, uptime主机名、OS版本、启动时间CPU 信息info, cores, load, usageCPU型号、核心数、负载、使用率内存信息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的Top106.2 添加 Windows 服务器操作路径监控中心→新增监控→Windows操作系统采集协议SNMP⚠️注意Windows 服务器需开启SNMP 服务。配置参数字段填写说明监控Host服务器 IP不带协议头任务名称自定义唯一名称标识此监控的名称端口默认 161Windows SNMP 服务对外提供的端口SNMP 版本V1/V2c/V3SNMP 协议版本SNMP 团体字默认 public类似于密码用于身份验证采集间隔30-60秒最小 30 秒是否探测建议开启新增监控前先探测检查可用性6.3 添加其他类型类型采集协议关键参数网络设备SNMPIP、SNMP 版本、Community / v3 凭据MySQLJDBCIP、端口、账号、密码RedisRedis 协议IP、端口、密码HTTP APIHTTP/HTTPSURL、方法、期望状态码问题处理状态一直异常检查目标服务器 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 ! OKequals()字符串等于equals(log.level,ERROR)contains()包含contains(log.attributes.hostname,server-01)逻辑与cpuUsage 80 memoryUsage 85||逻辑或cpuUsage 90 || load 10常用表达式示例响应时间大于等于 400msresponseTime 400线程数量大于 300equals(state,runnable) size 300日志级别为 ERRORequals(log.level,ERROR)可用性低于 100% 告警availability 100 ? ALERT : OK7.4 常用阈值规则参考规则名称指标类型表达式级别触发次数服务器离线Linux / 监控可用性equals(__app__,linux) equals(__available__,down)紧急3CPU过高Linux / CPU信息cpuUsage 80警告3内存过高Linux / 内存信息memoryUsage 85警告3磁盘过高Linux / 磁盘信息diskUsage 80警告37.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-PathD:\Software Tool\HertzBeat\data-DestinationD:\Backup\HertzBeat\data-$(Get-Date-FormatyyyyMMdd)-Recurse-Force# 备份配置Copy-Item-PathD:\Software Tool\HertzBeat\config-DestinationD:\Backup\HertzBeat\config-$(Get-Date-FormatyyyyMMdd)-Recurse-Force# 启动容器dockerstarthertzbeat10.3 修改配置的正确姿势直接在 Windows 上编辑D:\Software Tool\HertzBeat\config\下的文件执行docker restart hertzbeat等待 1-2 分钟生效第十一章故障排查手册11.1 常用排查命令# 查看容器状态dockerps-a# 查看容器日志docker logs--tail 100 hertzbeat# 实时查看日志docker logs-f hertzbeat# 查看邮件相关错误docker logs--tail 200 hertzbeat|findstr/imail smtp auth error# 查看容器内配置文件docker exec-it hertzbeatcat/opt/hertzbeat/config/application.yml|findstr/ihost username password port# 测试容器到 SMTP 连通性docker exec-it hertzbeat ping smtp.exmail.qq.com# 进入容器docker exec-it hertzbeat/bin/bash# 查看容器资源占用docker stats hertzbeat11.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 1111.3 日志分析要点日志关键词含义处理Authentication failed授权码错误或已失效重新生成授权码Connection refused/timeout无法连接到 SMTP 服务器检查容器网络、DNS、防火墙SSLHandshakeExceptionSSL 配置不匹配检查端口和 SSL 设置Started HertzBeatApplication启动完成可以访问 UIOutOfMemoryError内存不足调大 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 服务器dockerrun-d--namehertzbeat\-p1157:1157-p1158:1158\--restartalways\-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/hertzbeat13.2 使用标签分组给服务器打标签envprod、typealgorithm、regionshenzhen阈值规则按标签关联新服务器自动继承规则标签可用于告警分组和路由13.3 分级告警服务器类型采集间隔触发次数核心服务器30秒2次非核心服务器60-120秒3次13.4 定期演练每月挑一台测试机模拟离线确认告警链路仍然通畅。附录A本次实操路径汇总项目路径WSL UbuntuD:\Software Tool\WSL\Ubuntu-24.04Docker 安装D:\DockerHertzBeat 配置D:\Software Tool\HertzBeat\configHertzBeat 数据D:\Software Tool\HertzBeat\dataHertzBeat 日志D:\Software Tool\HertzBeat\logsWeb UIhttp://127.0.0.1:1157默认账号admin / hertzbeat首次登录后修改附录B常用 Docker 命令速查# 启动 HertzBeatdockerstarthertzbeat# 停止 HertzBeatdocker stop hertzbeat# 重启 HertzBeatdocker restart hertzbeat# 查看日志docker logs-f hertzbeat# 进入容器docker exec-it hertzbeat/bin/bash# 删除容器数据保留在挂载目录dockerrm-f hertzbeat# 查看容器资源占用docker stats hertzbeat# 更新容器自动重启策略docker update--restartalways hertzbeat附录CHertzBeat 容器端口说明端口用途1157Web UI 页面端口1158集群/采集器端口14317OTLP/gRPC 摄入监听端口启用 Greptime 存储时启动8428VictoriaMetrics 端口启用时6041TDengine RESTful 端口启用时