Интересно, как я мог бы показать на одной главной странице «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>';
mysql
, redis
и т.п.crontab -e
, это принесет вам редактор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 минут на отдельных серверах & хранить данные в общем хранилище данных.
Если вы не хотите использовать какие-либо сторонние инструменты, к которым ваш скрипт будет обращаться, я бы увидел эти простые опции
Запустите ваш скрипт на каждом сервере и сохраните информацию для каждого сервера в общем экземпляре MYSQL или Memcache.
Или вы создаете сценарий, например showstatus.php, на каждом сервере, который возвращает всю необходимую информацию в формате JSON. Тогда ваш реальный сервер мониторинга может собрать JSON с каждого сервера и обработать его.