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

nmon监控Linux服务器系统资源
 单个字母表示对应监控点的快捷键,只要输入对应的字母,即可显示相应的资源耗用情况。输入c、m

、d、n后显示效果如下(显示了cpu、内存、磁盘、网络的使用情况)

nmon监控Linux服务器系统资源
 输出文件,可以使用下列命令进行数据的输出:

[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文件即可。

nmon监控Linux服务器系统资源

单击Analyse nmon data按钮,选择需要分析的nmon文件(过程中需要保存Execel文件)
保存后的Excel文件如图:

nmon监控Linux服务器系统资源
 

自动化收集性能数据脚本:

[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

相关推荐