Как получить использование CPU / RAM от серверов differenet?

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

Это текущий код, который я использую. Но дело в том, что я только получаю использование 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>';

2 ответа

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

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

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

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

    образец:

    cron script

      // 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 минут на отдельных серверах и хранить данные в общем хранилище данных.