对我来说确实很奇怪,但问题就在这里。
如果我使用 SNMP 客户端(例如 ManageEngineMibBrowser)来查询设备,我会得到看起来合理的数字:
dpStatusMemoryStatusUsage.0 97
dpStatusMemoryStatusTotalMemory.0 33015552
dpStatusMemoryStatusUsedMemory.0 31928048
dpStatusMemoryStatusFreeMemory.0 1087504
dpStatusMemoryStatusReqMemory.0 4294967295
dpStatusMemoryStatusXG4Usage.0 4294967295
dpStatusMemoryStatusHoldMemory.0 4294967295
我如何证明合理?简单的数学运算表明,如果 TotalMemory 为 3301552 且 UsedMemory 为 31928048,则使用率百分比 97% 似乎是正确的(另外,我还用 GUI 仔细检查了 :)
现在,我在 Linux 上使用 snmpget 运行相同的命令并得到以下内容(它们是 OIDS,但顺序与上面的相同):
SNMPv2-SMI::enterprises.14685.3.1.5.1.0 = Gauge32: 36
SNMPv2-SMI::enterprises.14685.3.1.5.2.0 = Gauge32: 99197400
SNMPv2-SMI::enterprises.14685.3.1.5.3.0 = Gauge32: 36004164
SNMPv2-SMI::enterprises.14685.3.1.5.4.0 = Gauge32: 63193236
SNMPv2-SMI::enterprises.14685.3.1.5.5.0 = Gauge32: 4294967295
SNMPv2-SMI::enterprises.14685.3.1.5.6.0 = Gauge32: 4294967295
SNMPv2-SMI::enterprises.14685.3.1.5.7.0 = Gauge32: 4294967295
如您所见,它们都是 Gauge32 类型……但前 4 个值完全不同!我需要进行某种转换吗?如果是这样,为什么前 4 个不同,而后 3 个不同,而它们都是同一类型?我真的很笨吗?:)
答案1
我注意到相同的值 4,294,967,295 代表 gauge32 的最大值,即 (2^32) - 1。这可能就是为什么它在两次读数之间没有发生变化的原因。
要检查不同的值,您需要将它们与实际读数(同时读取)进行比较,以确定进行了哪种类型的转换。这是我目前能说的最好的答案 :)