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... ] [ [ ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i ] [ -p ] [ -q ]
[ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { | SUM | ALL | XALL } ] [ -P { | ALL } ]
[ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]
[ -x { | SELF | ALL } ] [ -X { | SELF | ALL } ]
[ -o [ ] | -f [ ] ]
[ -s [ ] ] [ -e [ ] ]
选项还真不少,不过大家可以根据自己的需要来选择使用。
我来介绍下常用的几个选项:
-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,我在这里抛砖引玉希望大家对上面文章不足的地方予以指正。