我想知道如何在一个主页上显示" Monitoring.php"几个不同的服务器来获得cpu / ram的使用。
这是目前使用的Code I。但问题是我只获得当前服务器的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 :(得分:0)
如果您不想使用脚本将访问的任何第三方工具,我会看到这个简单的选项
在每台服务器上运行脚本,并将每台服务器的信息存储在共享的MYSQL或Memcache实例中。
或者在每台服务器上创建类似showstatus.php的脚本,该脚本以JSON格式返回所有必需的信息。然后,您的实际监控服务器可以从每个服务器收集JSON并进行处理。
答案 1 :(得分:0)
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分钟运行一次。将数据存储到公共数据存储中。