物理服务器可通过ipmi/bmc或lm-sensors精准采集温度与风扇转速;云主机因硬件抽象限制,仅能获取模拟cpu温度,无法读取风扇转速,需依赖厂商api或统一监控平台接入。

服务器硬件温度与风扇转速监控,核心在于区分环境类型(物理机/虚拟机/云服务器)和可用接口(IPMI/BMC、内核hwmon、传感器芯片),再选择对应工具链。物理服务器可实现全指标精准采集;云主机或虚拟机因硬件抽象层限制,通常只能获取有限温度(如CPU封装温度),无法读取风扇转速。
用ipmitool查BMC传感器数据(物理服务器首选)
IPMI是带外监控的黄金标准,不依赖操作系统运行状态,能直接从BMC读取CPU、内存、NVMe、风扇、电压等原始传感器值。
- 先确认BMC已启用:执行 ipmitool mc info 查看固件版本和状态;若报错,需进BIOS开启IPMI/LAN控制功能
- 查看所有传感器并过滤关键项:
ipmitool sensor list | grep -E "(Temp|Fan|degrees|C|RPM)"
输出中类似 CPU0_Temp|54.000|degrees C|ok 或 Fan1_Middle|7200.000|RPM|ok 即为有效读数 - 单独查看某类数据更清晰:
ipmitool sdr type Temperature(只看温度)
ipmitool sdr type Fan(只看风扇)
用lm-sensors读取主板芯片传感器(Linux物理机/部分裸金属云)
适用于无BMC或BMC未启用的场景,依赖内核hwmon驱动(如coretemp、k10temp、it87、f71882fg),适合监控CPU核心温度、主板温度及部分四针PWM风扇。
- 安装并自动探测:
sudo apt install lm-sensors -y && sudo sensors-detect(Debian/Ubuntu)
按提示连按回车,最后输入 YES 保存模块到 /etc/modules - 加载驱动后执行:sensors,输出中查找含 Core、Package、fan 的行
示例:fan1: 1920 RPM 或 Package id 0: +53.0°C - 若sensors无风扇输出,可手动查sysfs:
cat /sys/class/hwmon/hwmon*/fan*_input 2>/dev/null | head -n1
云服务器与宝塔面板的现实限制
阿里云、腾讯云、华为云等主流公有云平台,底层使用虚拟化(KVM/Xen),宿主机硬件被完全抽象,Guest OS无法访问真实风扇、BMC或多数温度传感器。
- 宝塔面板“系统→硬件信息”中显示的CPU温度,仅来自内核 coretemp 驱动模拟的vCPU温度,数值参考价值低,且不显示风扇转速
- 即使安装lm-sensors或ipmitool,也会提示“no sensors found”或“Unable to establish IPMI v2 / RMCP+ session”,属正常现象
- 唯一可行路径:联系云厂商获取其管控台提供的硬件健康API(如阿里云CloudMonitor的host.temperature指标),但该数据非实时、无风扇维度
集成到监控系统(Prometheus/Zabbix)
生产环境中不建议人工轮询,应将硬件指标接入统一监控平台实现告警与趋势分析。
-
Prometheus:用Node Exporter的textfile收集器,写脚本定时调用ipmitool/sensors,生成.prom文件,例如:
ipmi_fan_rpm{fan="Fan1_Middle"} 7200.0
ipmi_cpu_temp_celsius{cpu="CPU0"} 54.0 - Zabbix:启用IPMI Interface,配置BMC地址、用户名、密码,挂载官方IPMI模板(Template IPMI OS Linux),自动发现并采集传感器项
- 关键提醒:设置合理阈值——CPU温度持续>85℃、风扇转速<额定值30%或突降至0,均应触发P1级告警











