如何从不同的服务器获取 CPU/RAM 的使用率?
How to get CPU/RAM usage from differenet servers?
我想知道如何在一个主页上显示 "Monitoring.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>';
如果您不想使用您的脚本将访问的任何第 3 方工具,我会看到这个简单的选项
运行 您在每台服务器上的脚本,并将每台服务器的信息存储在共享 MYSQL 或 Memcache 实例中。
或者您在每台服务器上创建类似 showstatus.php 的脚本,其中 returns JSON 中的所有必需信息。然后你的实际监控服务器可以从每个服务器收集JSON并处理它。
- 创建一个 php 脚本,将数据存储到公共数据存储中
像
mysql
、redis
等
- 将php脚本添加到cron作业以间隔执行,对于每个服务器运行
crontab -e
,它将为您带来一个编辑器
window 其中;放置脚本间隔逻辑。
- 修改
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 分钟 运行 并将数据存储到公共数据存储中。
我想知道如何在一个主页上显示 "Monitoring.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>';
如果您不想使用您的脚本将访问的任何第 3 方工具,我会看到这个简单的选项
运行 您在每台服务器上的脚本,并将每台服务器的信息存储在共享 MYSQL 或 Memcache 实例中。
或者您在每台服务器上创建类似 showstatus.php 的脚本,其中 returns JSON 中的所有必需信息。然后你的实际监控服务器可以从每个服务器收集JSON并处理它。
- 创建一个 php 脚本,将数据存储到公共数据存储中
像
mysql
、redis
等 - 将php脚本添加到cron作业以间隔执行,对于每个服务器运行
crontab -e
,它将为您带来一个编辑器 window 其中;放置脚本间隔逻辑。 - 修改
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 分钟 运行 并将数据存储到公共数据存储中。