Это действительно странно для меня, но вот в чем проблема.
Если я использую клиент 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% кажется правильным (плюс я дважды проверил с графическим интерфейсом :)
Теперь я запускаю те же команды на том же, используя snmpget в Linux, и получаю следующее (это 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 - нет, если все они одного типа? Я действительно тупой? :)
Я могу заметить, что те же значения 4 294 967 295 представляют максимальное значение gauge32, которое составляет (2 ^ 32) - 1. Вероятно, поэтому оно не было изменено между двумя показаниями.
Чтобы проверить разные значения, вам необходимо сравнить их с фактическими показаниями (снятыми одновременно), чтобы выяснить, какой тип преобразования выполняется. Это лучшее, что я могу сказать на данный момент :)