我有一台配备双 Intel Xeon E5-2667 CPU(6 核+HT)的服务器,正在运行OEL
(RHEL
)6.4。出于某种原因,对它的 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)
我/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 核心的温度?
答案1
似乎有些不对劲,因为你有这样一行:
LM-SENSORS-MIB::lmTempSensorsDevice.8 = STRING: Physical id 1
但之后什么都没有,好像只有 8 个传感器插槽。错误报告采用双 Intel Xeon E5-2670 (8 核),其中最后一行设备信息如下:
LM-SENSORS-MIB::lmTempSensorsDevice.10 = STRING: Physical id 1
因此那里有 10 个插槽,同样只有一个处理器。
有一些 Ubuntu 说明成功显示 20 个插槽(那里没有“物理 ID”行),尽管处理器完全不同,并且使用 miscSensors 类别。他们在那里说“根据 lm-sensors 安装页面,需要 Net-SNMP 5.5 或更高版本”,这是 RedHat 6.4 上的版本。
无论如何,您可以尝试升级 Net-SNMP,看看是否能解决问题。但也许这确实是 MIB 和特定处理器系列的问题,在这种情况下,需要解决该错误。
答案2
这让我很伤心,在这里找到了答案 - https://bbs.archlinux.org/viewtopic.php?id=127017 一旦您按照文章中的描述添加别名,它就会与第二个 CPU 的传感器名称输出重复有关,它会显示在 snmpwalk 上。
答案3
每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),则只有传感器命令中显示的最新传感器才会显示在 snmp 中。
从 5.8 开始,此补丁就包含在 net-snmp 中。您的 net-snmp 可能是 5.7 或更低版本,我的也是 (Debian buster)。根据 @Kevin 的回答,在这种情况下,解决方法是设置传感器名称的标签。即在代理上的 /etc/sensors.conf 中定义:
chip "cpu_thermal-virtual-*"
label temp1 "CPU Temp"
chip "gpu_thermal-virtual-*"
label temp1 "GPU Temp"
代理上的 snmpd 重新启动后,net-snmp 会考虑它们。