OEL
我有一台运行( ) 6.4的双 Intel Xeon E5-2667 CPU(6 核 + HT)的服务器,RHEL
由于某种原因,对它的 snmp 查询显示只有 1 个 CPU 的内核。
这是输出sensors
命令。
[root@host log]# sensors
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +56.0°C (high = +96.0°C, crit = +102.0°C)
Core 0: +55.0°C (high = +96.0°C, crit = +102.0°C)
Core 1: +50.0°C (high = +96.0°C, crit = +102.0°C)
Core 2: +52.0°C (high = +96.0°C, crit = +102.0°C)
Core 3: +55.0°C (high = +96.0°C, crit = +102.0°C)
Core 4: +52.0°C (high = +96.0°C, crit = +102.0°C)
Core 5: +56.0°C (high = +96.0°C, crit = +102.0°C)
coretemp-isa-0001
Adapter: ISA adapter
Physical id 1: +43.0°C (high = +96.0°C, crit = +102.0°C)
Core 0: +43.0°C (high = +96.0°C, crit = +102.0°C)
Core 1: +41.0°C (high = +96.0°C, crit = +102.0°C)
Core 2: +42.0°C (high = +96.0°C, crit = +102.0°C)
Core 3: +41.0°C (high = +96.0°C, crit = +102.0°C)
Core 4: +40.0°C (high = +96.0°C, crit = +102.0°C)
Core 5: +41.0°C (high = +96.0°C, crit = +102.0°C)
my/etc/snmp/snmpd.conf
具有以下行以允许完全访问:
view all included .1 80
然而,当我对该服务器进行 snmpwalk 时,会发生以下情况:
[root@host log]# snmpwalk -c public -v 2c localhost sensor
LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 1
LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 2
LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 3
LM-SENSORS-MIB::lmTempSensorsIndex.4 = INTEGER: 4
LM-SENSORS-MIB::lmTempSensorsIndex.5 = INTEGER: 5
LM-SENSORS-MIB::lmTempSensorsIndex.6 = INTEGER: 6
LM-SENSORS-MIB::lmTempSensorsIndex.7 = INTEGER: 7
LM-SENSORS-MIB::lmTempSensorsIndex.8 = INTEGER: 8
LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: Physical id 0
LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: Core 0
LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: Core 1
LM-SENSORS-MIB::lmTempSensorsDevice.4 = STRING: Core 2
LM-SENSORS-MIB::lmTempSensorsDevice.5 = STRING: Core 3
LM-SENSORS-MIB::lmTempSensorsDevice.6 = STRING: Core 4
LM-SENSORS-MIB::lmTempSensorsDevice.7 = STRING: Core 5
LM-SENSORS-MIB::lmTempSensorsDevice.8 = STRING: Physical id 1
LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 60000
LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 44000
LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 42000
LM-SENSORS-MIB::lmTempSensorsValue.4 = Gauge32: 42000
LM-SENSORS-MIB::lmTempSensorsValue.5 = Gauge32: 42000
LM-SENSORS-MIB::lmTempSensorsValue.6 = Gauge32: 41000
LM-SENSORS-MIB::lmTempSensorsValue.7 = Gauge32: 41000
LM-SENSORS-MIB::lmTempSensorsValue.8 = Gauge32: 44000
如何让 snmp 报告所有 CPU 上核心的温度?
似乎有些不对劲,因为您有这条线:
但之后什么也没有,好像只有 8 个传感器插槽。有一个双 Intel Xeon E5-2670(8 核)的错误报告,其中最后一个 Device 行是这样的:
所以那里有 10 个插槽,同样只有一个处理器。
有一些 Ubuntu 指令成功地显示了 20 个插槽(那里没有“物理 id”行),尽管使用完全不同的处理器并使用 miscSensors 类别。他们在那里说“根据 lm-sensors 安装页面,需要 Net-SNMP 5.5 或更高版本”,这是 RedHat 6.4 上的版本。
在任何情况下,您都可以尝试升级 Net-SNMP 并查看是否可以解决问题。但也许这确实是 MIB 和特定处理器系列的问题,在这种情况下,需要解决该错误。
这让我很伤心,也在这里找到了答案 - https://bbs.archlinux.org/viewtopic.php?id=127017 它与传感器的名称输出有关,一旦添加如文章中所述的别名,它显示在 snmpwalk 上。
根据https://sourceforge.net/p/net-snmp/mailman/net-snmp-coders/thread/54DA2206.9080007%40redhat.com/#msg33390512 ,在https://github之前不支持传感器的重复名称。 com/net-snmp/net-snmp/commit/e886f5eb9701851ad6948583156bfd59fcb6110f。这意味着如果两个传感器被命名为 temp1(一个用于 GPU,另一个用于 CPU),则只有最新出现在 sensors 命令中的传感器才会显示在 snmp 中。
这个补丁从 5.8 开始在 net-snmp 中。可能你的 net-snmp 和我的一样是 5.7 或更低(Debian buster)。在这种情况下,根据@Kevin 的回答,解决方法是为传感器的名称设置标签。那是在代理定义的 /etc/sensors.conf 中:
net-snmp 在代理上重新启动 snmpd 后将它们考虑在内。