Как получить использование ЦП / ОЗУ с разных серверов?

Интересно, как я мог бы показать на одной главной странице «Monitoring.php» пару разных серверов, чтобы получить их использование процессора / оперативной памяти.

Это текущий код, который я использую. Но дело в том, что я получаю только использование CPU / Ram текущего сервера, где хранятся файлы .php.

function get_server_cpu_usage(){

$load = sys_getloadavg();
return $load[0];

}function get_server_memory_usage(){

$free = shell_exec('free');
$free = (string)trim($free);
$free_arr = explode("\n", $free);
$mem = explode(" ", $free_arr[1]);
$mem = array_filter($mem);
$mem = array_merge($mem);
$memory_usage = $mem[2]/$mem[1]*100;

return $memory_usage;
}echo '<h4>Server Memory usage: ' . number_format(get_server_memory_usage(), 2) . '%</h4><div class="meter"><span style="width:' . get_server_memory_usage() . '%"></span></div><br>
<h4>Server CPU usage: '     . get_server_cpu_usage() . '% </h4><div class="meter"><span style="width:' . get_server_cpu_usage() . '%"></span></div>';

0

Решение

  1. Создайте скрипт php, который хранит данные в общем хранилище данных
    лайк mysql, redis и т.п.
  2. Добавьте скрипт php в задание cron, чтобы сделать это через некоторое время, для этого на каждом сервере запустите crontab -e, это принесет вам редактор
    окно где; поставить скрипт интервальной логики.
  3. модифицировать monitor.php файл для получения содержимого из общей базы данных.

пример:

cron скрипт

  // do.php it runs in every server you have
$cpu_usage = get_server_cpu_usage();
$memory_usage = get_server_memory_usage();
// you can use hostname, ip name logic
$server_id = get_server_uniqid();
//logic to insert data
insert_monitor_data($server_id, $cpu_usage, $server_id);

файл crontab

*/10 * * * * /path/to/do.php

cron будет запускаться каждые 10 минут на отдельных серверах & хранить данные в общем хранилище данных.

0

Другие решения

Если вы не хотите использовать какие-либо сторонние инструменты, к которым ваш скрипт будет обращаться, я бы увидел эти простые опции

Запустите ваш скрипт на каждом сервере и сохраните информацию для каждого сервера в общем экземпляре MYSQL или Memcache.

Или вы создаете сценарий, например showstatus.php, на каждом сервере, который возвращает всю необходимую информацию в формате JSON. Тогда ваш реальный сервер мониторинга может собрать JSON с каждого сервера и обработать его.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector