转自: http://www.51testing.com/?uid-130600-action-viewspace-itemid-220288
为了监控服务器性能
写了个shell脚本,监控服务器的:CPU、MEM、磁盘IO、负载四个指标
记录下来,以备不时之需
sar安装方法:
yum install sysstat
脚本内容如下:
#!/bin/bash
if (( $# != 2))
then
echo "usage:num1-Please enter the number of script. execution"
echo "usage:num2-Please enter a value for rest time"
exit 1
fi
sar -d 0 | head -3 | tail -1 > dev8-0.log
sar -u 0 | head -3 | tail -1 > cpu.log
sar -r 0 | head -3 | tail -1 > mem.log
echo "" > loadAverage.log
for ((i=1;i<=$1;i++))
do
sar -d 1 | grep dev8-0 | grep -v Average >> dev8-0.log
sar -u 1 | head -4 | tail -1 >> cpu.log
sar -r 1 | head -4 | tail -1 >> mem.log
monitorDate=date +'%F %T'
load=w | grep 'load average' | awk -F ',' {'print $4,$5,$6'}
echo $monitorDate $load >> loadAverage.log
sleep $2
done
脚本使用方法:
chmod +x monitor.sh(脚本名)
./monitor.sh 5 1
每1秒记录监控数据一次,共记录5次
注:每次运行脚本时,会把上一次的日志清空;
脚本内容解释:
sar -d 1:打印磁盘IO信息,采样间隔1秒
sar -u 1:打印CPU信息,采样间隔1秒
sar -r 1:打印MEM信息,采样间隔1秒
然后再利用一些grep/head/tail/awk等命令取得想要的部份信息;
(使用过程中发现,采样间隔使用0秒时,会出现打印出来的CPU和磁盘IO信息全一样,MEM会有所不同。。。)
脚本运行结果:
./monitor.sh 5 1
运行后,当前目录下会生成下面几个日志文件:
# cat cpu.log
02:21:24 PM CPU %user %nice %system %iowait %steal %idle
02:21:24 PM all 0.89 0.05 1.29 0.23 0.00 97.54
02:21:25 PM all 0.89 0.05 1.29 0.23 0.00 97.54
02:21:26 PM all 0.89 0.05 1.29 0.23 0.00 97.54
02:21:27 PM all 0.89 0.05 1.29 0.23 0.00 97.54
02:21:28 PM all 0.89 0.05 1.29 0.23 0.00 97.54
%user 在用户模式中运行进程所花的时间
%nice 运行正常进程所花的时间
%system 在内核模式(系统)中运行进程所花的时间
%iowait 没有进程在该CPU上执行时,处理器等待I/O完成的时间
%idle 没有进程在该CPU上执行的时间
#cat mem.log
02:21:24 PM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
02:21:24 PM 2884304 1267572 30.53 335216 795552 2048248 0 0.00 0
02:21:25 PM 2884428 1267448 30.53 335216 795552 2048248 0 0.00 0
02:21:26 PM 2884428 1267448 30.53 335216 795552 2048248 0 0.00 0
02:21:27 PM 2884428 1267448 30.53 335216 795552 2048248 0 0.00 0
02:21:28 PM 2884552 1267324 30.52 335216 795552 2048248 0 0.00 0
kbmemfree 空闲内存大小
kbmemused 内存使用量大小
%memused 内存使用量百分比
kbbuffers 内存buffers大小
kbcached 内存cached大小
kbswpfree 空闲swap大小
kbswpused swap使用量大小
%swpused swap使用量百分比
# cat dev8-0.log
02:21:24 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
02:21:24 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
02:21:25 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
02:21:26 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
02:21:27 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
02:21:28 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
DEV sar命令正在监视的块设备的名字。
tps 每秒传输数(或者每秒IO数)
rd_sec/s 每秒512字节读取数
wr_sec/s 每秒512字节写入数
%util 设备饱和度时,会发生此值接近100%。
# cat loadAverage.log
2010-09-16 14:21:24 load average: 0.14 0.14 0.15
2010-09-16 14:21:25 load average: 0.61 0.23 0.18
2010-09-16 14:21:26 load average: 0.61 0.23 0.18
2010-09-16 14:21:27 load average: 0.61 0.23 0.18
2010-09-16 14:21:28 load average: 0.61 0.23 0.18