背景:PHP探针里有一个:服务器实时数据(CPU型号 [4核] ...) 网络使用状况(eth1 : 已接收 : 1.03612 GB 已发送 : 0.20958 GB) 这个是肿实现的?
[root@localhost ~]$ cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo:1068205690 1288942839 0 0 0 0 0 0 1068205690 1288942839 0 0 0 0 0 0
eth0:91581844 334143895 0 0 0 0 0 145541676 4205113078 3435231517 0 0 0 0 0 0
proc/net/dev 文件保存了网卡总流量信息,通过间隔一段间隔,将入网卡与出记录加起来。减去之前就得到实际速率。
php实现代码:
<?php
$dev = $argv[1]?$argv[1]:"eth0";
while(true){
$result = file_get_contents("/proc/net/dev");
preg_match("/{$dev}:(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)/", $result, $preg_arr);
$lastre = $thisre;
$lasttr = $thistr;
$thisre = $preg_arr[1];
$thistr = $preg_arr[2];
$re = hbw($thisre - $lastre);
$tr = hbw($thistr - $lasttr);
echo "\33[2J";
printf("\33[1;1H%-12sss\n", 'Device', 'In', 'Out');
printf("\33[2;1H%-12sss\n", $dev, $re, $tr);
sleep(1);
}
function hbw($size) {
$size *= 8;
if($size > 1024 * 1024 * 1024) {
$size = round($size / 1073741824 * 100) / 100 . ' Gbps';
} elseif($size > 1024 * 1024) {
$size = round($size / 1048576 * 100) / 100 . ' Mbps';
} elseif($size > 1024) {
$size = round($size / 1024 * 100) / 100 . ' Kbps';
} else {
$size = $size . ' Bbps';
}
return $size;
}
?>
php怎么得到cpu 内存 网络流量的使用率
<?php
$str = shell_exec('more /proc/stat');
$pattern = "/(cpu[0-9]?)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo "共有".count($out[1])."个CPU,每个CPU利用率如下:<br>";
for($n=0;$n<count($out[1]);$n++)
{
echo $out[1][$n]."=".(100*($out[1][$n]+$out[2][$n]+$out[3][$n])/($out[4][$n]+$out[5][$n]+$out[6][$n]+$out[7][$n]))."%<br>";
}
?>
//////////////////////////////////////////////////////////////////////
<?php
$str = shell_exec('more /proc/meminfo');
$pattern = "/(.+):\s*([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo "物理内存总量:".$out[2][0]."<br>";
echo "已使用的内存:".$out[2][1]."<br>";
echo "-----------------------------------------<br>";
echo "内存使用率:".(100*($out[2][0]-$out[2][1])/$out[2][0])."%<br>";
?>
//////////////////////////////////////////////////////////////////////
<?php
$str = shell_exec('more /proc/net/dev');
$pattern = "/(eth[0-9]+):\s*([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo "共有".count($out[1])."个网络接口,每个网络接口利用率如下:<br>";
for($n=0;$n<count($out[1]);$n++)
{
echo $out[1][$n].":收到 ".$out[3][$n]." 个数据包,发送 ".$out[11][$n]." 个数据包<br>";
}
?>
来自:http://idsips.blog.163.com/blog/static/48001272201312092813563/
shell脚本之获取网卡实时流量:
最近一直在搞服务器监控系统,分享一下本人采集网卡实时流量的shell 脚本,写得不好的地方还请指出,共同进步一下。
使用方式:
sh /root/monitor_flow eth0 1
1 表示 进流量(RX)
2 表示 出流量 (TX)
[root@ZWCLC6X-7198 ~]# sh /root/monitor_flow eth1 2
1k
以上代码仅供参考。
代码来自:http://blog.csdn.net/youngqj/article/details/7254224
[root@localhost ~]$ cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo:1068205690 1288942839 0 0 0 0 0 0 1068205690 1288942839 0 0 0 0 0 0
eth0:91581844 334143895 0 0 0 0 0 145541676 4205113078 3435231517 0 0 0 0 0 0
proc/net/dev 文件保存了网卡总流量信息,通过间隔一段间隔,将入网卡与出记录加起来。减去之前就得到实际速率。
php实现代码:
<?php
$dev = $argv[1]?$argv[1]:"eth0";
while(true){
$result = file_get_contents("/proc/net/dev");
preg_match("/{$dev}:(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)/", $result, $preg_arr);
$lastre = $thisre;
$lasttr = $thistr;
$thisre = $preg_arr[1];
$thistr = $preg_arr[2];
$re = hbw($thisre - $lastre);
$tr = hbw($thistr - $lasttr);
echo "\33[2J";
printf("\33[1;1H%-12sss\n", 'Device', 'In', 'Out');
printf("\33[2;1H%-12sss\n", $dev, $re, $tr);
sleep(1);
}
function hbw($size) {
$size *= 8;
if($size > 1024 * 1024 * 1024) {
$size = round($size / 1073741824 * 100) / 100 . ' Gbps';
} elseif($size > 1024 * 1024) {
$size = round($size / 1048576 * 100) / 100 . ' Mbps';
} elseif($size > 1024) {
$size = round($size / 1024 * 100) / 100 . ' Kbps';
} else {
$size = $size . ' Bbps';
}
return $size;
}
?>
php怎么得到cpu 内存 网络流量的使用率
<?php
$str = shell_exec('more /proc/stat');
$pattern = "/(cpu[0-9]?)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo "共有".count($out[1])."个CPU,每个CPU利用率如下:<br>";
for($n=0;$n<count($out[1]);$n++)
{
echo $out[1][$n]."=".(100*($out[1][$n]+$out[2][$n]+$out[3][$n])/($out[4][$n]+$out[5][$n]+$out[6][$n]+$out[7][$n]))."%<br>";
}
?>
//////////////////////////////////////////////////////////////////////
<?php
$str = shell_exec('more /proc/meminfo');
$pattern = "/(.+):\s*([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo "物理内存总量:".$out[2][0]."<br>";
echo "已使用的内存:".$out[2][1]."<br>";
echo "-----------------------------------------<br>";
echo "内存使用率:".(100*($out[2][0]-$out[2][1])/$out[2][0])."%<br>";
?>
//////////////////////////////////////////////////////////////////////
<?php
$str = shell_exec('more /proc/net/dev');
$pattern = "/(eth[0-9]+):\s*([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo "共有".count($out[1])."个网络接口,每个网络接口利用率如下:<br>";
for($n=0;$n<count($out[1]);$n++)
{
echo $out[1][$n].":收到 ".$out[3][$n]." 个数据包,发送 ".$out[11][$n]." 个数据包<br>";
}
?>
来自:http://idsips.blog.163.com/blog/static/48001272201312092813563/
shell脚本之获取网卡实时流量:
最近一直在搞服务器监控系统,分享一下本人采集网卡实时流量的shell 脚本,写得不好的地方还请指出,共同进步一下。
使用方式:
sh /root/monitor_flow eth0 1
1 表示 进流量(RX)
2 表示 出流量 (TX)
[root@ZWCLC6X-7198 ~]# sh /root/monitor_flow eth1 2
1k
以上代码仅供参考。
代码来自:http://blog.csdn.net/youngqj/article/details/7254224
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/7237/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2014-6-5 13:36
评论列表