Не удается получить реальное текущее использование и доступную оперативную память в PHP с использованием SNMP - PullRequest
0 голосов
/ 05 сентября 2018

Я планирую получить использование ОЗУ на сервере, я попробовал 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%): enter image description here

Я прочитал неправильное решение или неправильный расчет? Любая помощь, пожалуйста

...