如何从不同的服务器获取 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并处理它。

  1. 创建一个 php 脚本,将数据存储到公共数据存储中 像 mysqlredis
  2. 将php脚本添加到cron作业以间隔执行,对于每个服务器运行 crontab -e,它将为您带来一个编辑器 window 其中;放置脚本间隔逻辑。
  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 分钟 运行 并将数据存储到公共数据存储中。