nmon监控Linux服务器系统资源
nmon详细使用过程
分析 AIX 和 Linux 性能的免费工具,nmon 工具可以显示所有重要的性能优化信息,并动态地对其进行更新。nmon 工具还可以将相同的数据捕获到一个文本文件,便于以后对报告进行分析和绘制图形。输出文件采用电子表格的格式 (.csv)。
nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括:
CPU 使用率
内存使用情况
内核统计信息和运行队列信息
磁盘 I/O 速度、传输和读/写比率
文件系统中的可用空间
磁盘适配器
网络 I/O 速度、传输和读/写比率
页面空间和页面速度
CPU 和 AIX 规范
消耗资源最多的进程
IBM HTTP Web 缓存
用户自定义的磁盘组
计算机详细信息和资源
异步 I/O,仅适用于 AIX
工作负载管理器 (WLM),仅适用于 AIX
IBM TotalStorage® Enterprise Storage Server® (ESS) 磁盘,仅适用于 AIX
网络文件系统 (NFS)
动态 LPAR (DLPAR) 更改,仅适用于面向 AIX 或 Linux 的 pSeries p5 和 OpenPower
还包括一个用来从 nmon 的输出生成图形并创建可以在 Web 站点显示的 .gif 文件的新工具。
下载地址:
http://sourceforge.jp/projects/sfnet_nmon/releases/
使用对应的操作系统文件:
[root@oracle11gasm1 /]# chmod +x nmon_x86_64_rhel54
直接运行nmon即可,采集数据并生成报表:
[root@oracle11gasm1 /]# ./nmon_x86_64_rhel54
单个字母表示对应监控点的快捷键,只要输入对应的字母,即可显示相应的资源耗用情况。输入c、m
、d、n后显示效果如下(显示了cpu、内存、磁盘、网络的使用情况)
输出文件,可以使用下列命令进行数据的输出:
[root@oracle11gasm1 /]# ./nmon_x86_64_rhel54 -fT -s 15 -c 5760
如果想在后台运行nmon,可使用:
[root@oracle11gasm1 /]# nohup ./nmon_x86_64_rhel54 -fT -s 15 -c 5760
命令的含义是,-f输出文件,-T输出最耗资源的进程,-s收集数据的时间间隔15秒收集一次,-c收集次数5760次,一天24小时
完成后会在当前目录生成一个.nmon的文件。nmon输出文件的命令方式是服务器名_日期时间.nmon
[root@oracle11gasm1 /]# ls *.nmon
oracle11gasm1_150319_1114.nmon
分析数据:
利用nmon工具收集到系统资源的相关数据后,就可以使用nmon工具的配套软件nmon analyser v33g.xls(工具可能因版本不同而不同)进行数据分析了。分析时只需要打开相应的.nmon文件即可。
单击Analyse nmon data按钮,选择需要分析的nmon文件(过程中需要保存Execel文件)
保存后的Excel文件如图:
自动化收集性能数据脚本:
[oracle@oracle11gasm1 nmonMonitor]$ more nmonMonitor.sh
#!/bin/bash
#local variables
vRunPath=/home/oracle/scripts/dailyJobs/nmonMonitor
vNmonDailyFilePath=${vRunPath}/nmonDailyFiles
vNmonMonthlyArchPath=${vRunPath}/nmonMonthlyArchives
vHostName=`hostname`
#THE YEAR OF LAST MONTH
vArchiveYear=`date --date "-1 month" +'%y'`
#LAST MONTH
vArchiveMonth=`date --date "-1 month" +'%m'`
#1ST DAY OF EVERY MONTH
vArchiveDay=`date +'%d'`
#THE YEAR OF 12 MONTH AGO
vCleanYear=`date --date "-12 month" +'%y'`
#THE MONTH OF 12 MONTH AGO
vCleanMonth=`date --date "-12 month" +'%m'`
#1ST DAY OF EVERY MONTH
vCleanDay=`date +'%d'`
fMain(){
fStartDailyNmon
fArchiveNmonFiles ${vArchiveDay} ${vArchiveMonth} ${vArchiveYear} ${vHostName}
fCleanNmonArchives ${vCleanDay} ${vCleanMonth} ${vCleanYear} ${vHostName}
}
fStartDailyNmon(){
cd ${vNmonDailyFilePath}
nohup /home/oracle/nmon/nmon_x86_64_rhel54 -fT -s 15 -c 5760 &
}
fArchiveNmonFiles(){
if [ $1 -eq 01 ] ; then
cd ${vNmonDailyFilePath}
tar -cvf ${vNmonMonthlyArchPath}/${4}_${3}_${2}_nmon_arc.tar.gz ${4}_${3}_${2}*.nmon
rm -rf ${4}_${3}_${2}*.nmon
fi
}
fCleanNmonArchives(){
if [ $1 -eq 01 ] ; then
cd ${vNmonMonthlyArchPath}
rm -rf ${4}_${3}_${2}_nmon_arc.tar.gz
fi
}
fMain
加入crontab
[oracle@oracle11gasm1 ~]$ crontab -l
* 1 * * * /home/oracle/scripts/dailyJobs/nmonMonitor/nmonMonitor.sh > /dev/null 2>&1