起因:老大说让我整一个简单的服务器性能监测程序。没别的就是输出当前服务器的信息,包括cpu占用和负载、磁盘占用和io、网络数据包的情况等。
过程:先去百度复制了几个脚本尝试了下,效果不怎么样。老老实实是的自己去写一个吧。
开工:先写了个流程。然后用echo的输出,干了两天(主要还是懒,这我心里还是有B数的)。。。。然后发现这脚本耗时太久了,如果用echo+grep去筛选信息,有很多项目会很耗时。
还有些根本无法输出。。。然后老大向我推荐了工具解决问题的思路。这样我找到了sar 命令。
查了下sar命令是这样被描述的,可以很符合我的情况。
---
sar命令可以从文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等方面进行报告
---
我的任务顺利完成,所以我要记一下这个命令的用法避免忘了
选项:
sar 命令来自于安装包 sysstat.x86_64(iostat也用这个),下面是他的一些选项。
-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
举个例子
sar -udr -n DEV 3 1 -p | grep -vE ^\'平均时间|Average\'
我这里用了-u -d -r -n 和DEV 分别输出了cpu 、磁盘、网卡的信息一目了然,当然还要明白这些输出项目的信息才行。
输出:
CPU %user %nice %system %iowait %steal %idle
10时27分37秒 all 0.33 0.00 0.00 0.00 0.00 99.67
10时27分34秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
10时27分37秒 1339048 710204 34.66 316948 224832 314752 15.36
10时27分34秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
10时27分37秒 xvda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时27分34秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10时27分37秒 eth0 8.00 7.00 2.28 1.47 0.00 0.00 0.00
10时27分37秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时27分37秒 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00