Я планирую получить использование ОЗУ на сервере, я попробовал SNMP в PHP на моем собственном компьютере, но когда я хочу получить процент использования ОЗУ в процентах, это не реальное использование ОЗУ по сравнению с системный монитор на моем компьютере.
Я прочитал это решение ниже, но все же я не получил правильное значение
(Используется — буферы — кэшируется) / Всего * 100 =% используемой памяти
Таким образом, вы можете получить следующее (выраженное в виде кода Perl):
my $ memRealTotalOID = ‘.1.3.6.1.4.1.2021.4.5.0’;
my $ memRealAvailOID = ‘.1.3.6.1.4.1.2021.4.6.0’;
my $ memRealBuffersOID = ‘.1.3.6.1.4.1.2021.4.14.0’;
my $ memRealCachedOID = ‘.1.3.6.1.4.1.2021.4.15.0’;
Расчеты памяти my $ memRealUsed = $ memRealTotal — $ memRealAvail;
Затем вы можете предупредить об использовании% RAM:
my $ realPercent = (($ memRealUsed — $ memRealBuffers — $ memRealCached) /
$ memRealTotal) * 100;
Вот мой код и результат:
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
$memRealTotalOID = snmpget("127.0.0.1", "public", ".1.3.6.1.4.1.2021.4.5.0");
$memRealAvailOID = snmpget("127.0.0.1", "public", ".1.3.6.1.4.1.2021.4.6.0");
$memRealBuffersOID = snmpget("127.0.0.1", "public",'.1.3.6.1.4.1.2021.4.14.0');
$memRealCachedOID = snmpget("127.0.0.1", "public",'.1.3.6.1.4.1.2021.4.15.0');
$memRealUsed = $memRealTotalOID - $memRealAvailOID;
$realPercent = (($memRealUsed - $memRealBuffersOID - $memRealCachedOID) / $memRealTotalOID) * 100;
print_r($realPercent);
текущий результат = 82.55542380
Между тем системный монитор показывает (89%):
Я прочитал неправильное решение или неправильный расчет? Любая помощь, пожалуйста
Задача ещё не решена.
Других решений пока нет …