ホームページ >バックエンド開発 >PHPチュートリアル >Linux サーバーの CPU、メモリ、およびハードディスクの使用量を取得するための PHP 実装コード

Linux サーバーの CPU、メモリ、およびハードディスクの使用量を取得するための PHP 実装コード

WBOY
WBOYオリジナル
2016-07-25 08:59:312999ブラウズ
  1. define("MONITORED_IP", "172.16.0.191"); //監視対象サーバーのIPアドレスもローカルアドレスです
  2. define("DB_SERVER", "172.16.7.2") / /データが保存されているサーバーの IP アドレス
  3. define("DB_USER", "root");
  4. define("DB_PWD","111111");
  5. define("DB_NMAE","パフォーマンス");
  6. class MyConnect{
  7. public function connect($db_server,$db_user,$db_pwd,$db_name){
  8. $conn = mysql_connect($db_server,$db_user,$db_pwd);
  9. if (!$conn){
  10. die('データベースに接続できませんでした: ' 。mysql_error());
  11. }
  12. $flag = mysql_select_db($db_name,$conn);
  13. if(!$flag){
  14. echo "

    データベース接続エラー!";exit();

  15. }else{
  16. mysql_query("SET NAMES UTF8");
  17. }
  18. }
  19. }
  20. ?>
コードをコピー

2.サーバーパフォーマンスデータのget_used_statusファイル。

  1. /**

  2. * サーバーのパフォーマンス CPU、メモリ、ハードディスク、その他の使用率を取得します
  3. * bbs.it-home.org を編集します
  4. */
  5. /*接続データ開始*/
  6. include("conn.php");
  7. $obj_MyConnect = new MyConnect() ;
  8. $obj_MyConnect -> connect(DB_SERVER,DB_USER,DB_PWD,DB_NMAE);
  9. /*接続データ終了*/
  10. function get_used_status(){
  11. $fp = Popen('top -b -n 2 | grep -E) "^(Cpu|Mem|Tasks)"',"r");//特定の時点でのシステム CPU とメモリ使用量を取得します
  12. $rs = "";
  13. while(!feof($fp)){
  14. $ rs .= fread($fp,1024);
  15. }
  16. pclose($fp);
  17. $sys_info =explode("n",$rs);

  18. $tast_info =explode(" , ",$sys_info[3]);//処理配列

  19. $cpu_info =explode(",",$sys_info[4]); //CPU占有配列
  20. $mem_info =explode(",",$sys_info[5] ]); //メモリ占有配列

  21. //実行中のプロセス数

  22. $tast_running =trim($tast_info[1],'running');
  23. //CPU使用率
  24. $cpu_usage = trim(trim($cpu_info[0],'Cpu(s): '),'%us'); //パーセンテージ
  25. //メモリ使用量
  26. $mem_total =trim(trim ($mem_info[0) ],'Mem: '),'k total');
  27. $mem_used = trim($mem_info[1],'k used');
  28. $mem_usage =round(100*intval($mem_used) /intval($mem_total) ),2); //パーセント
  29. /*ハードディスク使用量の開始*/

  30. $fp = Popen('df -lh | grep -E "^(/ )"'," r");
  31. $rs = fread($fp,1024);
  32. pclose($fp);
  33. $rs = preg_replace("/s{2,}/",' ',$rs) ; //複数を置換"_" のスペース
  34. $hd =explode(" ",$rs);
  35. $hd_avail = trim($hd[3],'G'); //ディスクの利用可能なスペースのサイズ単位 G
  36. $hd_usage = trim($ hd[4],'%'); //マウントポイントの割合
  37. //print_r($hd);
  38. /*ハードディスク使用終了*/
  39. //検出時間
  40. $fp = Popen("date +"% Y-%m-%d %H:%M"","r");
  41. $rs = fread($fp,1024);
  42. pclose($fp);
  43. $detection_time = trim($rs);
  44. /*IP アドレスの取得 begin*/
  45. /*
  46. $fp = Popen('ifconfig eth0 | grep -E "(inet addr)"','r');
  47. $rs = fread($fp,1024);
  48. pclose($fp);
  49. $rs = preg_replace("/s{2,}/",' ',trim($rs)); //複数のスペースを " _" に置き換えます
  50. $rs =explode(" " ,$rs);
  51. $ip = trim($rs[1],'addr:');
  52. */
  53. /*IP アドレスの取得end*/
  54. /*
  55. $ file_name = "/tmp/data.txt"; // 絶対パス: homedata.dat
  56. $file_pointer = fopen($file_name, "a+") // "w" はモードです、詳細については以下を参照してください
  57. fwrite($ file_pointer,$ip); // 最初にファイルを 0 バイトに書き込み、
  58. fclose($file_pointer); // 終了
  59. */
  60. return array('cpu_usage'=>$cpu_usage,' mem_usage'=>$mem_usage,'hd_avail'=>$ hd_avail,'hd_usage'=>$hd_usage,'tast_running'=>$tast_running,'detection_time'=>$detection_time);
  61. }
  62. / /echo date("Y-m-d H:i:s",time( ))."
    ";
  63. $status=get_used_status();
  64. $sql = "パフォーマンスに挿入(ip,cpu_usage,mem_usage, hd_avail,hd_usage,tast_running,detection_time) ";
  65. $sql .= " value('".MONITORED_IP."','".$status['cpu_usage']."','".$status['mem_usage'] ."','".$status['hd_avail']. "','".$status['hd_usage']."','".$status['tast_running']."','".$ status['detection_time']."')";
  66. $query = mysql_query($sql) または die("SQL ステートメントの実行に失敗しました!");
  67. unset($status);
  68. //echo date("Y-m-d H :i:s",time())."?>

コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。