linux配置snmp硬件监控需完成安装、启用ucd-mib及sensors扩展模块、禁用public社区、限定rocommunity访问ip、放开udp 161监听并开放防火墙端口,最后用snmpget/snmpwalk验证cpu、内存、磁盘及温度等oid数据。

Linux 运维中配置 SNMP 服务用于服务器硬件监控,核心是让 snmpd 正确采集 CPU、内存、磁盘、温度、风扇转速等底层指标,并安全暴露给监控平台(如 Zabbix、Prometheus + snmp_exporter)。关键不在于装上就行,而在于启用硬件感知模块、关闭默认风险项、开放必要访问权限。
安装适配发行版的 SNMP 套件
不同系统用对应命令,确保安装 net-snmp 主程序和 net-snmp-utils 工具集(含 snmpwalk、snmpget):
- Ubuntu/Debian:
sudo apt update && sudo apt install snmpd snmp - RHEL/CentOS 7:
sudo yum install net-snmp net-snmp-utils - RHEL/CentOS 8+ 或 Fedora:
sudo dnf install net-snmp net-snmp-utils - openSUSE:
sudo zypper install net-snmp
若环境无法联网,可提前用 yum --downloadonly 下载 RPM 包离线部署,注意 net-snmp、net-snmp-libs、net-snmp-utils 版本必须严格一致。
启用硬件监控必需的 MIB 模块
默认 snmpd 只提供基础系统信息(如 uptime、hostname),要获取硬件状态,需加载传感器和设备驱动相关 MIB:
- 确认已安装
lm_sensors并完成探测:sudo sensors-detect(按提示一路回车,最后会生成/etc/sensors3.conf) - 在
/etc/snmp/snmpd.conf末尾追加以下加载行:
extend .1.3.6.1.4.1.2021.7890.1 sensor_temp /usr/bin/sensors -u | grep '_input' | awk '{print $2}'
include /usr/share/snmp/mibs/ucd-snmp/diskio
include /usr/share/snmp/mibs/ucd-snmp/extensible
其中 diskio 提供磁盘 I/O 统计,extensible 支持自定义脚本扩展(如用 sensors 输出温度),.1.3.6.1.4.1.2021.7890.1 是私有 OID 树,避免冲突。
安全配置访问控制与监听地址
绝不能保留默认 rocommunity public —— 这等于把服务器硬件状态公开给全网:
- 注释或删除原
rocommunity public行:sudo sed -i 's/^rocommunity public/#rocommunity public/' /etc/snmp/snmpd.conf - 添加带源限制的只读社区(例如仅允许监控服务器 192.168.5.100 访问):
echo "rocommunity myhwmon 192.168.5.100" | sudo tee -a /etc/snmp/snmpd.conf - 放开监听地址(默认只绑 127.0.0.1):修改
agentAddress行为agentAddress udp:161,udp6:[::1]:161,或更明确写成agentAddress udp:0.0.0.0:161(生产环境慎用,优先配合防火墙) - 开放 UDP 161 端口:
sudo ufw allow 161/udp(Ubuntu)或sudo firewall-cmd --permanent --add-port=161/udp && sudo firewall-cmd --reload(RHEL)
验证硬件指标是否可采集
重启服务后,立即本地验证关键硬件路径是否返回数据:
- 重启:
sudo systemctl restart snmpd && sudo systemctl enable snmpd - 查 CPU 负载(UCD-MIB):
snmpget -v2c -c myhwmon 127.0.0.1 1.3.6.1.4.1.2021.10.1.3.1 - 查内存使用(UCD-MIB):
snmpwalk -v2c -c myhwmon 127.0.0.1 1.3.6.1.4.1.2021.4 - 查磁盘使用(UCD-MIB):
snmpwalk -v2c -c myhwmon 127.0.0.1 1.3.6.1.4.1.2021.9 - 查自定义温度(extend):
snmpwalk -v2c -c myhwmon 127.0.0.1 1.3.6.1.4.1.2021.8(对应 extend 的 OID 子树)
若某项无返回,检查 sensors 是否有输出、snmpd 日志(/var/log/snmpd.log)是否有模块加载失败提示。











