一、结果收集
1.#./nmon -s10 -c60 -f -m /home/
( 生成的文件存放路径 #./nmon_x86_rhel45 -s10 -c60 -f -m /home/ 参数解释:
-s10 每 10 秒采集一次数据。 -c60 采集 60 次,即为采集十分钟的数据。
-f 生成的数据文件名中包含文件创建的时间。
-m 生成的数据文件的存放目录。 这样就会生成一个 nmon 文件,并每十秒更新一次,直到十分钟后。
生成的文件名如: _090824_1306.nmon ,"" 是这台主机的主机名。 nmon -h查看更多帮助信息)
2.生成报表:
下载 nmon analyser (生成性能报告的免费工具):
https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon_analyser
3.打开结果
将之前生成的 nmon 数据文件传到 Windows 机器上,用 Excel 打开分析工具 nmon analyser v33C.xls 。点击 Excel 文件中的 "Analyze nmon data" 按钮,选择 nmon 数据文件,这样就会生成一个分析后的结果文件: hostname_090824_1306.nmon.xls ,用 Excel 打开生成的文件就可以看到结果了。
如果宏不能运行,需要做以下操作:
工具 -> 宏 -> 安全性 -> 中,然后再打开文件并允许运行宏。
下面是在测试环境中生成的NMON报告截图:
红色区域为不同指标的分析报告。
二、需要指标/分析
分析阶段 我们通常需要 CPU(%)、MEM(%)、DISKBUSY(%)、NET(MB)几个相关数值(CPU、内存、磁盘、网络)
这么说不懂的伙伴可能还是不太理解我们到底需要哪些具体的数据指标呢?
不要急,下面我们一步步分析得出;
大家需要明白:
由于nmon启动时间未必是应用平稳的时间,同时nmon监控时间段也许比应用施压的要长;所以nmon的结果里常常存在一些明显不合理的数据--比如前几次结果的CPU等占用明显低于中段的平均数据,或者后面几次采样结果很小;对于这样的数据我们在分析的时候要予以过滤;
(也就是数据表中明显不同于其他数值的数据我们是不需要的大了,或者小了)
1.CPU
找到CPU_ALL 表,取CPU%列的平均值就是我们需要的CPU数据(CPU使用率)
---注意下图中红框中就是无效数据;
(很明显,都是70左右,其中有一个是27.5)
2. DISKBUSY
DISKBUSY表,对于单磁盘服务器直接对SDA列取平均即可;
多服务器的话看情况而定--如果只有一个磁盘有压力那么就选择那个磁盘即可,要是两个磁盘均有则要合起来取个平均;(磁盘使用率)
3. MEM%
在MEM表里面使用如下公式计算出每行的内存使用率并进行取平均:
(Memtotal - Memfree - cached - buffers)/Memtotal * 100即( =(B2-F2-K2-N2)/B2*100); (内存使用率)
4. NET(MB) 网络占用是唯一需要转换为MB的而不是%
找到eth0-total eth1-total中不为0的那列,取平均并除以1024;(网络占用)
到此,以上就是我们通常需要的指标;
附加命令:
定时任务:
除配合性能测试的短期监控,我们也可以实现对系统的定期监控,作为运营维护阶段的参考。定期监控实现如下:
1) 执行命令:#crontab –e
2) 在最后一行添加如下命令:
0 8 * * 1,2,3,4,5 /nmon/nmon_x86_rhel5 -f -N -m /nmon/log -s 30 -c 1200
表示:
周一到周五,从早上08点开始,监控10个小时(到18:00整为止),输出到/nmon/log
自动按天采集数据:
在 crontab 中增加一条记录:
0 0 * * * root nmon -s300 -c288 -f -m /home/ > /dev/null 2>&1
300*288=86400 秒,正好是一天的数据。