星期三 五月 09, 2007

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,热切期待中。



 

 


 

         
 

 

 

 



 

About

samwan

Search

Categories
Archives
« 四月 2014
星期日星期一星期二星期三星期四星期五星期六
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
今天