无法直接修改硬件传感器阈值,需通过软件链路实现:用sensors-detect+fancontrol设软阈值调控风扇,或用Prometheus+Node Exporter配置告警规则。
CentOS 本身不提供直接修改主板/芯片组传感器(如 it87、coretemp、acpitz)原始报警阈值的接口。这些阈值通常由 BIOS 固件或传感器芯片硬编码控制,Linux 内核仅读取状态,不能写入修改。你看到的“温度过高”警告,其实是用户态监控工具(如 lm_sensors + fancontrol 或第三方服务)自己判断后触发的,不是硬件真在报警。
这是最贴近“调阈值”需求的可行路径:让系统在温度达到你指定值时主动降频或调速,效果等同于报警+响应。
sensors-detect 扫描并加载对应内核模块(如 it87、k10temp),确认能读到 temp1_input、fan1_input 等字段/etc/fancontrol,关键字段必须填全:DEVPATH(设备路径)、SENSOR(如 /sys/class/hwmon/hwmon0/device/temp1_input)、PWM(对应风扇 PWM 控制节点)、MINSTART/MINSTOP/MAXPWM
FANINPUTS 行里配好温度-风扇映射,例如:FANINPUTS="/sys/class/hwmon/hwmon0/device/pwm1 /sys/class/hwmon/hwmon0/device/temp1_input",然后用 fancontrol 启动闭环调节/etc/fancontrol 里的 MINTEMP 和 MAXTEMP —— 它们定义了风扇开始转和全速转的温度点,这就是你可控的“阈值”如果你需要邮件/钉钉/Webhook 等真实告警,而不是风扇动作,就得走指标采集+规则引擎路线。Node Exporter 暴露的 node_hwmon_temp_celsius 是唯一可靠来源。
node_exporter 启动时加了 --collector.hwmon 参数(默认开启)curl -s http://localhost:9100/metrics | grep node_hwmon_temp_celsius,会看到类似 node_hwmon_temp_celsius{chip="k10temp_0000",sensor="Tdie"} 42.5
alert.rules 里写规则:ALERT CPU_Temp_High<br> IF node_hwmon_temp_celsius{chip=~"k10temp.*",sensor="Tdie"} > 85<br> FOR 2m<br> LABELS {severity="warning"}<br> ANNOTATIONS {summary="CPU die temp > 85°C for 2m"}
Alertmanager 配好接收器后,这条规则就会在温度持续超 85°C 两分钟时发通知有些服务器厂商(如 Dell iDRAC、HP iLO)允许通过带外管理接口调整传感器告警门限,但普通 CentOS 主板 BIOS 不开放这类选项。尝试用 ipmitool sensor thresh 查看或设置,大概率返回 Command not supported 或权限拒绝。即使支持,也需重启生效,且与 Linux 用户态监控完全解耦——你改了 BIOS 阈值,lm_sensors 还是照常读数,Prometheus 规则也不会自动同步。
真正要改硬件级响应,只有两个现实出口:换主板(选支持 IPMI 阈值配置的型号),或接受 BIOS 默认值,把所有“报警”逻辑收归到 Prometheus/Alertmanager 这一层统一管控。