如何从不同的服务器获得CPU / RAM使用?

时间:2017-01-13 07:31:29

标签: php server cpu-usage ram

我想知道如何在一个主页上显示" 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>';

2 个答案:

答案 0 :(得分:0)

如果您不想使用脚本将访问的任何第三方工具,我会看到这个简单的选项

在每台服务器上运行脚本,并将每台服务器的信息存储在共享的MYSQL或Memcache实例中。

或者在每台服务器上创建类似showstatus.php的脚本,该脚本以JSON格式返回所有必需的信息。然后,您的实际监控服务器可以从每个服务器收集JSON并进行处理。

答案 1 :(得分:0)

  1. 创建一个php脚本,将数据存储到公共数据存储中 例如mysqlredis等。
  2. 将PHP脚本添加到cron作业以在一个时间间隔内执行,为此在每个服务器上运行crontab -e,它将为您带来一个编辑器 窗口在哪里;把脚本区间逻辑。
  3. 修改monitor.php文件以从公共数据库获取内容。
  4. 示例:

    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分钟运行一次。将数据存储到公共数据存储中。