ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

从零安装 lm-sensors 硬件监控的完整实战

从零安装 lm-sensors 硬件监控的完整实战 从零安装 lm-sensors 硬件监控的完整实战【免费下载链接】lm-sensorslm-sensors repository项目地址: https://gitcode.com/gh_mirrors/lm/lm-sensors3 点 17 分机房服务器自己重启了。查内核日志是 CPU 过热触发的保护机制而风扇转速早就不对劲。要是那天就能直接读到温度和风扇数据这事本可以提前发现。lm-sensors 就是干这个的一个开源的 Linux 硬件监控工具实时采集 CPU 温度、风扇转速、电压等传感器数据。下面带你从零装好、跑通、用起来。数据是怎么流起来的内核里的传感器驱动coretemp、k10temp、nct6775 这类先把每颗芯片的读数暴露成 /sys/class/hwmon/ 下的一组 sysfs 文件。libsensors 库负责读这些文件再按配置文件里的 label、compute 规则把原始值换算成人能看懂的标签和单位核心解析代码在 lib/ 里。最上层的 sensors 命令、sensord 守护进程、fancontrol 风扇调速工具全都从这个库取数各管一种输出形态。一句话内核 sysfs → libsensors 加工 → 各工具输出。3 行命令装好主流发行版直接用包管理器两条命令任选其一apt install lm-sensors # Debian / Ubuntu dnf install lm_sensors # RHEL / Fedora只有发行版版本太旧、或要跟踪最新代码时才走源码编译git clone https://gitcode.com/gh_mirrors/lm/lm-sensors cd lm-sensors make all sudo make install # 需要 gcc、make、bison、flex装完主要用这几个东西/usr/bin/sensors 看读数/usr/bin/sensors-detect 扫硬件/etc/sensors3.conf 存主配置。仓库里还有一份带注释的样例配置在 etc/sensors.conf.eg。第一次跑通检测与加载驱动先跑检测脚本一路按提示选 Ysudo sensors-detect它会逐条扫 I2C/SMBus 总线最后列出缺哪些内核模块。照推荐加载Intel 机器最常见的是sudo modprobe coretemp然后验证sensors输出里出现这样的芯片块温度是具体数字就算通了coretemp-isa-0000 Core 0: 45.0 °C (high 85.0 °C)改配置让输出可读主配置在 /etc/sensors3.conf自己写的板卡配置放 /etc/sensors.d/ 目录更干净。最常改两样label 重命名compute 换算公式。一个最小可运行片段chip nct6775-* label in0 VCore label in3 12V compute in3 ((6.8/10)1)*, /((6.8/10)1) set temp1_max 85存盘后把阈值写进硬件并验证sensors -s sensorsin3 应该从 1.8V 左右的原始值变成稳定的 12V 上下标签也换了名字。自动化守护监控、阈值报警、风扇联动 三个方向各一条命令。后台守护sudo sensord -c /etc/sensord.conf它按固定周期把传感器读数写进日志或 RRD 数据库不用每次手动敲 sensors。阈值报警不用单独起服务配置里写 set temp1_max 85温度一旦越线sensors 输出里对应数值旁自动挂上 ALARM 标记。风扇联动先交互式生成配置再启动sudo pwmconfig sudo fancontrol它按映射表把温度转成转速写进 pwm 文件核心字段只有三个FCTEMPS参考哪路温度、FCFANS控制哪路风扇、MINTEMP/MAXTEMP温度区间边界。排错按症状找药 ⚠️读数一直是空或提示找不到芯片驱动多半没加载。确认 sysfs 里有芯片目录ls /sys/class/hwmon/是空的就按 sensors-detect 推荐列表逐个 modprobe。检测脚本什么都扫不到内核 I2C 子系统可能没开。看总线是否枚举出来了ls /sys/bus/i2c/devices/一条 I2C 总线都没有就得重编内核把 I2C 驱动和板载总线打开。电压读数明显不对缺 compute 公式或者公式和实际分压电阻对不上。翻仓库的 configs/ 目录按主板型号找现成配置抄过来比对一下公式。普通用户跑 sensors 报权限错误用户没有读 sysfs 文件的组权限。看一眼文件属组ls -l /sys/class/hwmon/hwmon0/把用户加进对应组常见的是 i2c重新登录生效。进阶接进监控系统或自己写脚本 ⚙️已有监控栈的话入口都只有一句话。Prometheusnode_exporter 的 textfile collector 可以直接吐 sensors 数据。Zabbix定义一个 UserParameter 调用 sensors -j 拿 JSON。最轻的玩法挂个 cron 定时跑小脚本。直接能用的监控脚本15 行以内#!/bin/bash THRESHOLD75 LOG/var/log/cpu-temp.log while true; do t$(sensors -j | jq -r .[coretemp-isa-0000].temp1.temp1_input // 0) if [ $t -ge $THRESHOLD ]; then echo $(date) temp ${t}C too high $LOG logger -t sens CPU temp ${t}C fi sleep 30 done行动清单包管理器装好 lm-sensors跑一次 sudo sensors-detect按推荐把驱动加载上。执行 sensors确认输出里能看到温度和风扇转速两个块。在 /etc/sensors3.conf 写 label 和 compute 规则sensors -s 把阈值写回硬件。机器多的话部署 sensord 持续落盘数据接进 Prometheus 或 Zabbix。读数还不对就到 configs/ 目录里按板型搜现成配置对照。参考资料配置文件语法 sensors.conf.5库接口说明 libsensors-API.txt。【免费下载链接】lm-sensorslm-sensors repository项目地址: https://gitcode.com/gh_mirrors/lm/lm-sensors创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表