WGCLOUD v3.7.0 已正式发布。对于同时维护物理机、云服务器和不同操作系统主机的团队来说,真正棘手的往往不是采集某一个 CPU 指标,而是如何低成本地部署采集端、集中查看状态,并把主机、磁盘、网络与硬件健康信息放进同一套运维视图。
WGCLOUD 采用分布式架构:服务端基于 Spring Boot,Agent 端使用 Go 编写。它覆盖主机系统信息、CPU、CPU 温度、内存、网络流量、磁盘 I/O、磁盘空间、系统负载和硬盘 SMART 健康等监控维度,适合需要批量管理主机、又不希望维护过重监控体系的场景。
Server 与 Agent 分工解决了什么问题
这类平台的核心不只是“展示图表”,而是将数据采集和集中管理拆开:
- Agent 负责贴近主机采集数据:读取 CPU、内存、磁盘、网络和系统负载等本地指标。
- Server 负责集中处理和展示:统一接收多台主机的数据,为运维人员提供聚合视角。
- 分布式部署降低接入成本:新增主机时,重点是安装和配置 Agent,而不是为每台机器单独搭建监控服务。
- 技术栈便于独立演进:Spring Boot 适合承载服务端管理逻辑,Go Agent 则有利于控制采集端的部署复杂度与资源占用。
在实际环境中,Server 通常应被视为管理面,Agent 所在主机则是数据面。部署时需要明确网络方向、端口访问规则、身份认证和数据保留策略,不能因为平台“轻量”就忽略安全边界。
不要只盯着 CPU 使用率
WGCLOUD 所覆盖的指标可以按故障定位链路来理解,而不是孤立地看每张图表。
计算与负载
CPU 使用率需要结合系统负载观察。CPU 很忙并不一定意味着异常,但如果负载持续增加、任务队列堆积,同时应用响应时间上升,就需要继续检查进程和 I/O。CPU 温度则更适合物理机、边缘设备或具备温度传感器的环境;部分虚拟机可能无法提供有效温度数据。
内存与磁盘
内存监控不能只看“已使用”,还应结合缓存、交换空间以及业务进程变化判断。磁盘方面,空间占用与 I/O 是两类问题:前者回答“还能写多少”,后者回答“读写是否成为瓶颈”。
硬盘 SMART 健康信息能够辅助发现介质异常,但它不是完整的硬件诊断方案。SMART 数据是否可读,取决于磁盘类型、控制器、虚拟化层以及 Agent 权限;某些云盘或 RAID 控制器不会直接暴露底层信息。
网络流量
网络监控适合识别流量突增、持续跑满或主机间吞吐差异。不过,流量高不等于故障。备份、镜像分发和批处理任务都可能制造正常峰值,告警阈值应结合机器角色设置,而不是对所有节点使用同一个固定值。
实践:部署前批量检查主机采集条件
在安装 Agent 前,可以先执行下面的 Linux 检查脚本,确认主机是否能读取常用系统指标。该脚本不是 WGCLOUD 自带命令,而是一个可直接改造的部署前检查工具;它不会修改系统配置。
将内容保存为 wgcloud-preflight.sh,然后执行 chmod +x wgcloud-preflight.sh && ./wgcloud-preflight.sh:
#!/usr/bin/env bash
set -u
printf '=== Host ===\n'
printf 'hostname: %s\n' "$(hostname)"
printf 'kernel: %s\n' "$(uname -sr)"
printf 'arch: %s\n' "$(uname -m)"
printf '\n=== CPU and load ===\n'
printf 'cpu cores: %s\n' "$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo unknown)"
printf 'load: %s\n' "$(cat /proc/loadavg 2>/dev/null || echo unavailable)"
printf '\n=== Memory ===\n'
if command -v free >/dev/null 2>&1; then
free -h
else
grep -E 'MemTotal|MemAvailable|SwapTotal|SwapFree' /proc/meminfo
fi
printf '\n=== Filesystems ===\n'
df -hT -x tmpfs -x devtmpfs 2>/dev/null || df -h
printf '\n=== Block devices ===\n'
if command -v lsblk >/dev/null 2>&1; then
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS 2>/dev/null \
|| lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT
else
echo 'lsblk is not installed'
fi
printf '\n=== Network interfaces ===\n'
if command -v ip >/dev/null 2>&1; then
ip -brief address
else
echo 'ip command is not installed'
fi
printf '\n=== Temperature sensors ===\n'
if compgen -G '/sys/class/thermal/thermal_zone*/temp' >/dev/null; then
for sensor in /sys/class/thermal/thermal_zone*/temp; do
value=$(cat "$sensor" 2>/dev/null || true)
if [[ "$value" =~ ^[0-9]+$ ]]; then
awk -v path="$sensor" -v raw="$value" \
'BEGIN { printf "%s: %.1f C\n", path, raw / 1000 }'
fi
done
else
echo 'no readable thermal zone found'
fi
printf '\n=== SMART capability ===\n'
if command -v smartctl >/dev/null 2>&1; then
echo 'smartctl found; available devices:'
smartctl --scan 2>/dev/null || true
else
echo 'smartctl not found; install smartmontools if SMART collection is required'
fi
printf '\nPreflight check completed.\n'
批量检查时,可以从运维机通过 SSH 运行:
for host in node01 node02 node03; do
echo "===== ${host} ====="
ssh -o ConnectTimeout=5 "$host" 'bash -s' < ./wgcloud-preflight.sh
done
运行前需要将 node01 node02 node03 替换为实际主机名或 IP,并提前配置 SSH 密钥。输出应重点检查以下几项:
- 目标主机架构是否符合准备使用的 Agent 构建版本。
- 磁盘挂载点是否完整,是否存在接近容量上限的分区。
- 温度传感器是否对当前系统可见。
- 是否安装
smartctl,以及当前权限能否扫描磁盘。 - 网络接口名称和地址是否符合资产记录。
上线时更值得关注的边界
引入 WGCLOUD v3.7.0 时,建议先选择少量代表性节点试运行,例如一台云服务器、一台物理机和一台高 I/O 主机。这样能较快验证不同环境下的数据完整性,而不会一次性扩大排查范围。
正式推广前,可以按下面的清单检查:
- 明确 Server 的备份、升级与恢复方式。
- 限制 Agent 与 Server 之间的网络访问范围,不暴露无关端口。
- 以最小权限运行 Agent;只有读取温度或 SMART 确实需要时,才补充相应权限。
- 根据数据库、应用服务器和存储节点等不同角色设置阈值。
- 验证断网、Server 重启和 Agent 重启后的行为。
- 对照现有告警系统,避免同一故障产生多套重复通知。
- 升级生产环境前保存配置与数据备份,并在测试节点验证 v3.7.0。
WGCLOUD 的价值在于把分散的主机状态收拢到统一视图中。真正决定落地效果的,则是部署前的资产梳理、权限控制、指标解释和分层告警:采集范围可以广,但告警必须足够准确。