perfmon
[ English version ]
一直说要写一篇文章来介绍我们公司的Perl牛人 Bill Gou写的perfmon软件却一直没有动,今天不能再拖了。
perfmon是一套用Perl编写的软件包,收集系统性能数据(sar/netstat/ps),并绘制出直观的性能曲线图(日报/周报/月报或者用户定制的周期)。自从我加入到SUN公司,我就没有看到过类似的软件(不管是公司的,还是外部的),B哥的这套工具,可以说是填补了这方面的空白。据我所知,对于IBM的AIX操作系统,有一个这样的工具,叫做nmon(Nigel's Monitor),因此,我们都开玩笑的对B哥说,应该把perfmon改个名字,叫bmon 
perfmon使用GNUplot软件来绘制图形,根据你制定的数据集,perfmon可以绘制以下图形(点击连接查看图形,有的图形暂缺):
所有图形都以PNG(Portable Network Graphics)格式保存。
要使用perfmon非常简单,只需按照下面的步骤执行:
一、安装必须的软件
由于要使用GNUplot绘图,因此必须先安装gnuplot软件。对于Solaris 10的用户,可以跳过这一步,因为Solaris 10已经预装了gnuplot程序(/opt/sfw/bin/gnuplot)。对于Solaris 8/Solaris 9的用户,可以从http://www.sunfreeware.com下载安装软件包。同时要下载的还有libpng软件包,否则gnuplot运行时可能会出现找不到动态连接库libpng.so.3的错误。
Solaris 8的用户,还需要安装sar和sadc的补丁110941-03或更高版本(对于其他OS版本,也建议升级到最新的补丁)。
二、安装并配置perfmon
1.创建perfmon用户(如果你的系统上已经有此用户名,你可以选择用其它名字。建议此用户只用户perfmon使用)
2.下载最新的perfmon到你的perfmon用户目录下。
3. 将最新的perfmon-x.x.x.tar.gz解压解包(升级也使用此方式,配置文件不会被覆盖):gzip -dc perfmon-x.x.x.tar.gz|tar xvf -
4. 编辑配置文件 perfmon.conf,所有配置项都是以'item=value'的格式定义。配置项见下表:
| 配置项 | 说明 |
| datadir | 存放数据的目录,缺省是perfmon用户目录下的data目录 |
| sadc | /usr/lib/sa/sadc |
| sar | /usr/bin/sar |
| gnuplot | gnuplot程序的全路径名,如:/usr/local/bin/gnuplot,或者/opt/sfw/bin/gnuplot(具体情况可能有所不同) |
| uname | /usr/bin/uname |
| netstat | /usr/bin/netstat |
| ps | /usr/bin/ps |
| plotset | 需要绘制的图形集。有效的图形集为:cpu,mem,paging,swap,io,ps,net,net2.pkt,net2.kbytes,net2.size。多个图形集以逗号(,)分隔。 |
| netif | 包含在图形中的网络接口。多个网络接口以逗号(,)分隔 |
| psuser | 需要绘制进程数量图的用户。多个用户以逗号(,)分隔,total代表所有用户。 |
| retention | 数据保留的时间。具体视空间增长情况而定,缺省是40天。 |
| compress | 缺省bzip2 |
| daily_interval | 绘制日报图形的时间间隔。缺省为default,即采用与采样相同的时间间隔。有效的时间间隔为数字加上h(表示小时,比如1h),或者加上m(表示分钟,比如10m),或者加上s(表示秒,比如30s)。下同 |
| weekly_interval | 绘制周报图形的时间间隔。缺省为30m |
| monthly_interval | 绘制月报图形的时间间隔。缺省为2h |
设置一定要正确,否则可能无法绘制图形。
5. 修改perfmon.rc中的下面一行:
/usr/bin/su perfmon -c "/export/share/perfmon/perfreset"
将perfreset设置为实际的碌径。
6. 拷贝perfmon.rc到/etc/init.d,并在/etc/rc2.d下面建立一个符号联接:
#cp perfmon.rc /etc/init.d/perfmon
# ln -s /etc/init.d/perfmon /etc/rc2.d/S21perfmon
启动perfmon: #/etc/init.d/perfmon start
7. 编辑perfmon的crontab,指定其绘制日报/周报/月报的具体时间。例子见perfmon随带的README文件。
配置完perfmon之后,就可以在相应的<datadir>/plot下面找到日报(daily)/周报(weekly)/月报(monthly)的图形。
三、离线使用(手动绘制方式)
perfmon还提供了手动绘制方式,你只需要使用相应的命令即可:
perfplot - 绘制日报
perfplot_weekly - 绘制周报
perfplot_monthly - 绘制月报
perfplot_range - 绘制指定的起止区间图形。
上述命令都可以使用 -h 开关获得使用说明。注意,仅当data目录下有相应的数据文件时,才能绘制出图形。
四、Troubleshooting
如果你的perfmon没有图形产生,或者产生的图形有问题。你应该首先查看perfmon用户的mail是否有错误信息,是否缺少程序或者动态连接库。perfplot程序在绘制完图形后,会删除相应的临时文件,为了保留临时文件,可以通过设置环境变量PERFMON_DEBUG=1,再运行相应的perfplot程序,然后把错误信息和临时文件收集起来以被诊断。
五、有更好的建议或者其他问题
perfmon以GPL(GNU Generic Public License)发布,如果你希望对该软件进行改善,或者合作,定制,请联系软件作者:Bill.Gou-AT-Sun-DOT-COM
听B哥说正在准备2.0,新版将采用更好的kstat技术(netstat可能导致TCP/IP栈进入串行操作方式,在网络高负荷的情况下,可能导致性能问题)及其他新的features,热切期待中。

发表于 美金 在 2007年05月09日, 07:34 下午 CST #
发表于 美金 在 2007年05月09日, 07:43 下午 CST #
发表于 spider man 在 2007年06月01日, 02:57 下午 CST #
发表于 222.212.124.165 在 2007年06月03日, 10:42 下午 CST #