2017-01-13 9 views
0

私は、どのようにして、メインページ "Monitoring.php"にいくつかの異なるサーバーを表示して、CPU/RAMの使用量を得ることができるのだろうかと思います。differenetサーバーから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>'; 

答えて

0
  1. 、各サーバ上で実行さcrontab -eために、間隔でそれを行うには、ジョブをcronにPHPスクリプトを追加
  2. などredismysqlのような一般的なデータ・ストレージ にデータを保存するPHPスクリプトを作成します。 、それはあなたにエディタをもたらすだろう ウィンドウ。スクリプト間隔のロジックを入れてください。
  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 

個々のサーバで10分ごとに実行されますcronの&ストアにデータコモnデータストア。

+0

ありがとうございました!できます! – Maybe

0

あなたが任意のサードパーティ製のツールを使用したくない場合は、共有MYSQLまたはMemcacheインスタンス。

または、各サーバーでshowstatus.phpのようなスクリプトを作成すると、JSONで必要な情報がすべて返されます。その後、実際の監視サーバーは各サーバーからJSONを収集して処理することができます。

関連する問題