sar+gnuplot
制作系统活动报告
时间
:
20090811
sar
是一款功能非常强大的系统活动信息监测工具
,他可以收集,报告和保存系统的多种活动信息。比如
内存、中断、块儿设备、网络以及单个进程等等。下面我来介绍下他的简单操作,希望对大家的工作有所帮助。
注意:
sar
只能工作在本地
首先是装包,如果你用的是
RHEL
或者
Centos
的话那就方便了,在安装盘上面带着呢
sysstat
就是这个包,装上就行了,这个包里面带着不少好东西,让我们看看
rpm -ql sysstat-7.0.2-3.el5
/etc/cron.d/sysstat
/etc/rc.d/init.d/sysstat
/etc/sysconfig/sysstat
/etc/sysconfig/sysstat.ioconf
/usr/bin/iostat
/usr/bin/mpstat
/usr/bin/sadf
/usr/bin/sar
/usr/lib/sa
/usr/lib/sa/sa1
/usr/lib/sa/sa2
/usr/lib/sa/sadc
都是系统监测相关的,不过我们现在说的就是
/usr/bin/sar
其他的如果您有兴趣的话可以自己看看帮助
先让我们看看他的选项
Usage: sar [ options... ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i <interval> ] [ -p ] [ -q ]
[ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <irq> | SUM | ALL | XALL } ] [ -P { <cpu> | ALL } ]
[ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]
[ -x { <pid> | SELF | ALL } ] [ -X { <pid> | SELF | ALL } ]
[ -o [ <filename> ] | -f [ <filename> ] ]
[ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]
选项还真不少,不过大家可以根据自己的需要来选择使用。
我来介绍下常用的几个选项:
-A
这个很厉害,相当于
-bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL
呵呵够全吧!几乎包括了系统的大部分信息,不过大多数都是我们不想看到的,所以咱们就自己定义吧。
sar 1 1
如果什么参数都不加的话默认就是
-P 0 1 1
-P 0
中的
-P
是监测
cpu
状态
0
是指第一个
cpu
后面第一个
1
是
1
秒
检查一次,第二个
1
是
检查几次
让我们看看输出结果
[root@jdb ~]# sar 1 1
Linux 2.6.18-128.el5 (jdb.vs.com) 2009
年
07
月
27
日
09
时
26
分
42
秒
CPU %user %nice %system %iowait %steal %idle
09
时
26
分
43
秒
all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.00 0.00 0.00 100.00
上面的输出结果我就不必多说了吧
好了让我们大概介绍下常用的几个参数
-r
监测内存使用情况
-I
中断
-d
指定块儿设备
-n DEV
网络接口
-P cpu -o
以二进制保存为文件
-f
查看用
-o
保存的二进制文件
-x PID
指定
pid
来监视
好了,让我们来举个例子来测试一下
sar
的功能,我们现在对
网络接口的情况进行监视
sar -n DEV 1 8
[root@jdb ~]# sar -n DEV 1 8
Linux 2.6.18-128.el5 (jdb.vs.com) 2009
年
07
月
27
日
09
时
52
分
33
秒
IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
09
时
52
分
34
秒
lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09
时
52
分
34
秒
eth0 2.00 1.00 120.00 162.00 0.00 0.00 0.00
09
时
52
分
34
秒
eth1 3.00 0.00 186.00 0.00 0.00 0.00 0.00
09
时
52
分
34
秒
sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
下面
7
行省略
,大家可以看到
在本机上的所有的网络接口的
状态
IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
这些参数请参考
man sar
这里我就不多说了。
现在我们将
输出到屏幕的内容保存到文件
sar -n DEV 1 300 &> /var/log/sar.log &
(文件生成后,把第一行和最后的
Average
部分去掉
为了方便给下面
的
gnuplot
使用
,
或者直接用
grep
过滤出自己想要的行)
这里我只想看
eth0
的状态
于是就
grep "eth0" /var/log/sar.log > /tmp/sar.log
别忘了
清掉最下面的
Average
平均值那一行,用
sed
或者之间删就不用说了。呵呵
不过大家发现没,这样一两行看着还行,但如果是监测几个小时呢?
一百多页的文件
怎么看
?这时我们还有一个软件可以用
,那就是
gnuplot
这个工具在
RHEL
和
Centos
的光盘里也自带
装包
rpm -ivh gnuplot-4.0.0-14.el5.i386.rpm
从
man page
介绍看
似乎很简单
“
一个交互式的绘图工具
”
但他的功能可是相当的强。
提醒下:
gnuplot
只能运行在图形界面如
gnome
和
KDE
,不过我们的服务器一般是不装那些的,怎么办?很简单你可以把
sar.log
文件拿出来随便找个带桌面的
linux
就可以了。
gnuplot
有自己的操作界面
输入
gnuplot
进入
G N U P L O T
Version 4.0 patchlevel 0
last modified Thu Apr 15 14:44:22 CEST 2004
System: Linux 2.6.18-128.el5
Copyright (C) 1986 - 1993, 1998, 2004
Thomas Williams, Colin Kelley and many others
This is gnuplot version 4.0. Please refer to the documentation
for command syntax changes. The old syntax will be accepted
throughout the 4.0 series, but all save files use the new syntax.
Type `help` to access the on-line reference manual.
The gnuplot FAQ is available from
http://www.gnuplot.info/faq/
Send comments and requests for help to
Send bugs, suggestions and mods to
Terminal type set to 'x11'
gnuplot>
然后就是使用
他自己的命令来进行绘图了
set xlabel "time"
#设置
x
轴坐标
名字
set ylabel "eth0 status"
#设置
y
轴坐标名字
set xdata time
#将
x
轴的
data
类型设置为
time
时间型
set timefmt "%H
时
%M
分
%S
秒
"
#
这步是设置
时间的格式,和上面的操作对应,(因为我用了默认的中文环境,所以
/tmp/sar.log
的第一行显示的时间为中文,所以我这里为了能看得舒服些,就这样写了,大家可以根据自己喜好定义
plot "/tmp/sar.log" using 1:5 #
这步就是输出图表了,
中间的是我刚才保存的文件
using 1:5
是使用文件中的
第一列作为
x
轴
第六列作为
y
轴
这时
会在屏幕上输出
一个
图形
,不过上面全是点
,为了更直观,看下面的操作
plot "/tmp/sar.log" using 1:5 with line
#再看图就不同了吧,用线的方式将点都连接起来了
当然还有很多
图形可以选择
可以用
plot "/tmp/sar.log" using 1:5 with
直接回车
查看,不过有些是用不了的,喜欢的话自己可以都试试看。
replot "/tmp/sar.log" using 1:4 with line #
如果你想在
刚才的图中
加入其他的
数值并和原来的图对比,就用这条命令吧。
至于你用什么图形工具去修改你的图片那就看自己喜好了,呵呵
,
在图上面用鼠标右键点击托选可以对图片进行放大,不过我经常放大后不知道怎么还原。
好了,我这里具了一个例子来说明
sar+gnuplot
的简单应用,不过能作图表的工具还是很多的比如
Excel
,我在这里抛砖引玉希望大家对上面文章不足的地方予以指正。