nmon是一款开源性能监控工具,用于监控linux系统的资源消耗信息,并能把结果输出到文件中,然后通过nmon_analyser工具产生数据文件与图形化结果。因为它免费,体积小,安装简单,耗费资源低,广泛应用于AIX和Linux系统。
一、下载Nmon
我们在下载前首先查看Linux系统内核版本,因为不同的Linux版本,Nmon对应的版本也不同,Linux版本必须Nmon版本一一对应
1.查看Linux内核方法
[mrjade@localhost nmon16d]$ uname -a
Linux linux 5.3.0-28-generic #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
2.下载地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
二、 Nmon工具使用详解
nmon所记录的数据包含以下一些方面(也是我们在寻找问题过程中所关注的资源点):
● cpu占用率
● 内存使用情况
● 磁盘I/O速度、传输和读写比率
● 文件系统的使用率
● 网络I/O速度、传输和读写比率、错误统计率与传输包的大小
● 消耗资源最多的进程
● 计算机详细信息和资源
● 页面空间和页面I/O速度
● 用户自定义的磁盘组
● 网络文件系统
另外在AIX操作系统上,nmon还能监控到其他的一些信息,如异步I/O等。
三、Nmon安装
nmon的安装步骤如下:
1)用root用户登录到系统中;
2)建目录:#mkdir / nmon;
3)把nmon用ftp上传到/test,或者通过其他介质拷贝到/ nmon目录中;
4)执行授权命令:#chmod +x nmon。
四、Nmon数据采集
为了实时监控系统在一段时间内的使用情况并将结果记录下来,我们可以通过运行以下命令实现:
#./nmon_x86_64_centos7 -f -t -s 30 -c 60 -m ./log/
-f:按标准格式输出文件:<hostname>_YYYYMMDD_HHMM.nmon;
-t:输出中包括占用率较高的进程;
-s 30:每隔n秒抽样一次,在这里每30秒进行一次数据采集
-c 60:取出多少个抽样数量,这里为采集60次,即监控 = 30*60 = 1800秒 = 30分钟
-m : 报告输入路径
输入命令回车后,将自动在当前目录生成一个hostname_timeSeries.nmon的文件,
如果hosname为nmon,生产的文件为:nmon_090308_1313.nmon。
通过sort命令可以将nmon结果文件转换为csv文件:
# sort -A nmon _090308_1313.nmon > nmon_090308_1313.csv
执行完sort命令后即可在当前目录生产nmon _090308_1313.csv文件。
(4)点击Analyse nmon data按钮,加载之前下载的nmon _090308_1313.csv文件。
三、Nmon性能测试结果报告分析
1.下载nmon analyser(用于将Nmon采集的数据转换成可视化图表)
2.双击打开nmon analyser v61.xlsm,切记不要用WPS,因为WPS不支持宏,点击Analyze nmon data按钮,,选择.nmon文件
3、监控结果图
(1)整体信息页面SYS_SUMM——服务器资源使用率汇总
我们需求的主要数据为cpu,mem,io和net。如下图:
将以上内容,如实填写至测试报告中。
1.折线图中蓝线为cpu占有率变化情况;粉线为磁盘IO的变化情况;
2.下面表各种左边的位磁盘的总体数据,包括如下几个:
Avg tps during an interval:每个间隔时间内,平均每秒IO数,也可以理解为提交处理的次数
Max tps during an interval:每个间隔时间内,每秒最大IO次数;
Max tps interval time:最大传送次数出现的时间点;
Total number of Mbytes read:整个监控时间内读的字节数;
Total number of Mbytes written:整个监控时间内写的字节数;
Read/Write Ratio:读写比率;
3.右边的为CPU的总体数据,可以获取如下信息;
cpu被User/Sys/Wait所占百分比;
cpu整体平均空闲率/占有率,以及最大的空闲率/占有率;
cpu各项数据最大值和平均值的比率;(2)CPU各项详细信息
1.CPU_ALL页面:是服务器cpu使用率的详细数据,该页面可以看到如下图的CPU整体上在每个监控点的数据,包括User%、Sys%、Wait%、Idle%、CPU%以及CPUs(cpu个数)及对应图表;
CPU使用率分为三部分,系统、用户和等待,分别对应图中红色、蓝色和绿色部分。CPU使用率100%的情况,如果红色占大部分,说明系统进程本身占据大部分cpu资源,可考虑系统是否存在过多僵尸进程或者系统进程存在死循环等原因;如果蓝色占大部分,说明用户进程占用大量cpu资源,可考虑被压系统是否压力过大,或者被压系统存在大量运算等消耗cpu资源的操作。2.CPU_SUMM页面:该页面可以看到如下图的各个CPU在总体数据,包括User%、Sys%、Wait%、Idle%以及对应图表;
3.cpu00x页面:是服务器内存使用率的概况。这些页面可以看到各个CPU在每个监控点的数据,包括User%、Sys%、Wait%、Idle%、CPU%以及对应图表;
(3)磁盘各项信息数据
1、DISK_SUMM页面:记录各个监控时间点的磁盘读写和IO次数,以及一些计算值;如下图,包括下面一些详细信息:
Disk Read KB/s:监控时间间隔内磁盘整体每秒读取字节数
Disk Write KB/s:监控时间间隔内磁盘整体每秒写字节数
IO/sec:监控时间间隔内磁盘整体平均每秒IO数
以及上面是哪个数据对应的Avg、WAvg和Max以及对应图表,WAvg公式如IF(B73=0,0,MAX(SUMPRODUCT(B2:B71,B2:B71)/SUM(B2:B71)-B73,0)),该数字不应该和AVG相差很大;
Disk Read 每秒读的千字节数目 图中为蓝色部分
Disk Write 每秒写的千字节数目 图中为红色部分
IO/sec 每秒进行的IO数(一次IO就是控制操作一次读或写,IO块就是读或写的大小),图中为上方黑色的线,报告中写的是这个参数的值
2、DISKBSIZE页面:详细记录了各监控时间点每个hdisk的磁盘块的大小,如我的服务器包括了sda、sda1、sda2、sda3以及dm-0、dm-1、dm-2、dm-3(dm是device mapper(设备映射))以及对应的Avg、WAvg和Max计算值;
3、DISKBUSY页面:详细记录了各监控时间点每个hdisk繁忙情况,包括的点同DISKBSIZE页面;
4、DISKREAD页面:详细记录了各监控时间点每个hdisk每秒读的子节数,包括的点同DISKBSIZE页面;
5、DISKWRITE页面:详细记录了各监控时间点每个hdisk每秒写的子节数,包括的点同DISKBSIZE页面;
6、DISKXFER页面:详细记录了各监控时间点每个hdisk每秒的IO次数,包括的点同DISKBSIZE页面;
(4)内存详细信息
1.MEM页面:服务器内存使用率的概况。
图内蓝色线条为物理内存使用率,红色线条为虚拟内存使用率。我们统计的内存使用率为:(已用物理内存+已用虚拟内存)/(物理内存+虚拟内存)x100%。
- Memnew页:服务器内存使用率的详细数据页面。该页面包含了如下图各监控时间点内存各方面的信息数据和图表,主要信息如下:
memtoatl:服务器总内存,单位M;
swaptotal:虚拟总内存;
memfree:剩余总内存;
swapfree:剩余虚拟内存;
图中蓝色部分为系统占用内存,紫色为进程占用内存,黄色为文件占用内存。假设出现内存使用率100%的情况,如蓝色+紫色部分较低,其余全是黄色部分,则说明系统存在大量文件操作,文件被写入内存以加速读写,不影响内存实际使用效率;如蓝色+紫色部分占90%以上,则说明内存使用率较高,需要结合page页综合分析是否存在内存泄露等问题。
(5)网络信息
1、Net页面:该页面包含了每个监控时间点各个网络适配器的读写等数据传输速率(千字节/秒),如我的服务器包括适配器有eth0和lo;
2、NETPACKET页面:该页面包含了每个监控时间点各个网络适配器读写包的数量;
Total read 每秒接收到的千字节的数目,如图蓝色部分
Total write 每秒发送的千字节的数目,如图红色部分
网络=Total read-Total write
网络的指标一般要根据设备来确定,百兆网卡的意思是每秒能够传输的网络流量是100Mbps,即最大的下载速度是12.5MB/s(100*1000000bit转换成byte->100000000/8bit/1000000=12.5MB/s)。
一般服务器是千兆网卡,即125MB/s。
(6)Page页,是交换空间的使用情况
pgin:每秒钟所读入的页数,包括从文件系统读取的页数
pgout:每秒钟所写出的页数,包括写到文件系统的页数
pgsin:每秒钟从页面空间所读取的页数
pgsout:每秒钟写到页面空间的页数
fsin:分析器计算的数据为pgin-pgsin的图形处理所用
fsout:分析器计算的数据为pgout-pgsout的图形处理所用
如果存在大量的频繁换入换出现象,则说明物理内存与虚拟内存之间存在频繁的切换,物理内存可能存在问题。
(7)Top页,是各种使用率的top事件
top页里记录了各个进程的cpu使用率,mem使用率,disk使用率以及net使用率。我们可以从图中轻松抓取到最占用cpu或者最占用mem的程序,为调优提供线索。