一、nmon介绍
nmon最早集成在IMB AIX内,于2009年开源。nmon系统支持常用发行版 Linux 、IBM POWER、 Mainframe和ARM;
运维人员通过nmon可以动态查看当前CPU负载,内存使用率、网络负载等,也可以进行时间段内数据采集,通过图表展示;
1.1 nmon优点
- 无需编译,开箱即用
- 非常小巧,二进制文件不到400KB
- 采集文件小,一个小时大概1M左右的数据量
- 支持多平台,从UNIX到主流Linux、ARM都支持
- 支持本地图形解析
官方网站:
http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
1.2 下载、解压
nmon最新的版本为16m
wget https://nchc.dl.sourceforge.net/project/nmon/nmon16m_helpsystems.tar.gz
#解压
mkdir nmon
tar xvf nmon16m_helpsystems.tar.gz -C /opt/nmon
如果需要支持ARM的请下如下版本
wget http://sourceforge.net/projects/nmon/files/nmon16h_helpsystems_v2.tar.gz
解压完以后,有非常多的二进制文件,可以根据自身的平台选择。比如我的操作系统是CentOS7,就选择nmon_x86_64_centos7
nmon_power_64_centos6 nmon_power_64le_rhel8 nmon_power_64_rhel7 nmon_x86_64_debian09 nmon_x86_64_oel8 nmon_x86_64_rhel7 nmon_x86_64_ubuntu16
nmon_power_64_centos7 nmon_power_64le_sles12 nmon_power_64_sles11 nmon_x86_64_debian10 nmon_x86_64_opensuse10 nmon_x86_64_rhel8 nmon_x86_64_ubuntu18
nmon_power_64le_centos7 nmon_power_64le_ubuntu14 nmon_x86_64_centos5 nmon_x86_64_mint18 nmon_x86_64_opensuse11 nmon_x86_64_sles10 nmon_x86_64_ubuntu19
nmon_power_64le_centos8 nmon_power_64le_ubuntu16 nmon_x86_64_centos6 nmon_x86_64_mint19 nmon_x86_64_opensuse12 nmon_x86_64_sles11
nmon_power_64le_linux nmon_power_64le_ubuntu18 nmon_x86_64_centos7 nmon_x86_64_oel5 nmon_x86_64_opensuse15 nmon_x86_64_sles12
nmon_power_64le_rhel7 nmon_power_64_linux nmon_x86_64_centos8 nmon_x86_64_oel6 nmon_x86_64_rhel5 nmon_x86_64_sles15
nmon_power_64le_rhel7_gpu nmon_power_64_rhel6 nmon_x86_64_debian08 nmon_x86_64_oel7 nmon_x86_64_rhel6 nmon_x86_64_ubuntu14
创建软连接
假如nmon安装在/opt/nmon/下
ln -s /opt/nmon/nmon_x86_64_centos7 /usr/bin/nmon
二、使用
如果直接查看当前运行数据,可以直接命令行执行nmon
,根据界面提示的选项选择查看数据
如果需要收集每个时间段的运行数据,可以使用nmon的采集功能;
nmon采集主要参数如下:
For Data-Collect-Mode
-f # 必选项,保存数据到本地目录中,格式为.nmon。
# 不指定采集间隔(默认为秒)或者快照数默认为-s300 -c288,即每5分钟采集一次,采集288次停止;
-s <seconds> # 采集间隔时间
-c <count> # 采集次快照数,采集多少次后停止采集
-t # 采集系统进程和数据,(-T能收集命令参数)
-x # 采集规划 Capacity Planning=15 min snapshots for 1 day. (nmon -ft -s 900 -c 96)
2.1 开始采集
创建采集目录
mkdir -p /data/nmon/
开始采集,采集的快照次数量不要太多,每次保持在500~800次最好
例子1:简单捕获,每2分钟采集一次,快照采集到720次停止采集
nmon-f-s120-c720 -m/data/nmon/
例子2:捕获具有系统进程的快照
nmon-fT-s120-c720 -m/data/nmon/
例子3:捕捉系统负载过大时的快照,5秒采集一次
nmon-fT-s5-c720 -m/data/nmon/
采集开始后,在对应的存储目录下,会形成一个文件,格式为:主机名_日期_采集时间
比如我新建了一个简单采集,每隔2分钟采集一次,采集到10次后自动退出;这样每隔2分钟可以查看到
pev_211201_1138.nmon
更新一次时间戳
nmon -f -s120 -c10 -m /data/nmon/
2.2 停止采集
在指定的采集次数后,nmon会自动停止进程。如果想手动停止采集,可以使用ps -ef |grep nmon
查看nmon的PID,然后使用kill -USR2 PID号
杀掉进程号即可,切记不能使用kill -9
,会造成nmon采集文件损坏,无法解析
# 查看进程
ps -ef |grep nmon
root 3116 1 0 11:38 pts/0 00:00:00 nmon -f -s120 -c10 -m /data/nmon/
root 4119 28852 0 11:54 pts/0 00:00:00 grep --color=auto nmon
# 杀掉进程
kill -USR2 3116
2.2 解析
2.2.1 nmonchart解析
nmonchart可以将nmon采集的数据解析成网页格式(html),通过Javascript使用谷歌图表库https://developers.google.com/chart/ ,解析成图表文件,方便运维人员分析数据;
注:此方法需要翻墙支持
下载、解压 nmonchart
wget http://sourceforge.net/projects/nmon/files/nmonchart40.tar
tar zvf nmonchart40.tar -C /opt/nmonchart/
做软连接
ln -s /opt/nmonchart/nmonchart /usr/bin/nmonchart
开始转换
nmonchart是Korn shell编写的,和centos上的bash不通用,需要另外安装ksh
yum install ksh
转换语法为
nmonchart file_name.nmon out_file_name.html
例如将pev_211201_1138.nmon转换为test.html
nmonchart pev_211201_1138.nmon test.html
开启VPN,下载到本地通过浏览器打开等待几秒即可,点击上面的标签可以看对应的负载
2.2.2 nmon Analyser解析
nmon Analyser通过EXCEL把nmon采集的数据转换成图表模式,推荐使用Micsoft office2016。
注:对于大型 nmon 数据文件 (10+ MB),强烈建议安装 64 位 Microsoft Excel 2016 或更高版本,并且 本机内存至少为 8 GB,最好为 16 GB 或更多;
下载nmon Analyser
通过浏览器下载即可,地址为https://altushostswe.dl.sourceforge.net/project/nmon/nmon_analyser_v69.zip
注:有可能下载不成功,可以多试几次
下载完成后,有个一个PDF文件和一个EXCEL文件,其中EXCEL起到解析作用
把nmon生成的文件(格式为.nmon),下载到本地,EXCEL或者WPS表格开启宏,打开nmon analyser v69_2.xlsm
表格文件,点击Analyze nmon data
添加nmon文件。
等待一段时间解析后即可查看文件,
三 普通采集与进程采集区别
普通采集 nmon -f -s120 -c10
与进程采集nmon -fT -s120 -c10
,进程采集多了2个选项Top Summary
和Top Commands
;
Top Summary:采集时间内资源占有率比较高的进程项
Top Commands:采集时间内CPU占有率比较高的command命令