背景

在性能测试或Linux服务器运维中,都会涉及对系统资源使用情况的监控,除了常用的系统命令外(如topiostatfree等),比较全面的资源数据监控工具是NMON,通过在服务器上运行NMON可以定期监控硬件资源并将采集数据生成到.nmon文件中。因此,问题就来了,在自动化监控中,如何实现对.nmon文件的解析并获得关心的性能指标数据呢?

 

nmon及其常用数据处理方法

nmon是一款用于系统监视、性能测试分析及调优的免费,它能够一次性提供关于系统及资源使用情况的大量性能指标信息,如CPU、内存、网络、磁盘IO等。

常用nmon使用方法是:

1.       开启nmon

./nmon_linux_64 -s 10 -c 60 -f -m /home/nmon

其中-s 指定每次采集间隔时间;-c 指定采集次数;-f 指定输出使用电子表格格式;-m 在命令将数据保存至文件之前切换目录。

2.       分析nmon数据

使用上述命令,采集次数到达后,会在指定目录生成xxxx.nmon的文件,分析.nmon文件的常用方法是使用nmon_analyser.xlsm,通过导入.nmon文件,将数据显示在excel文件中。

 

python解析nmon的姿势

通过上述分析,获取nmon文件数据的常用方法主要应用在交互模式下,并不适合在性能自动化或自动化运维监控中。下面将介绍使用python解析nmon文件并获取性能指标数据的方法。

首先.nmon文件本质是文本文件,可以使用python直接进行读写操作;

其次,通过分析关心指标数据的位置,通过正则匹配的方法获取数据;

最后,将数据汇总写入html,用于展示各个服务器上的资源使用情况;

根据上述思路,实现解析.nmon并获得CPU使用情况的代码如下:

 

6666.png


其他资源的获取情况类似,不再赘述。

 

效果展示

根据实现的脚本,分析各服务器的.nmon文件并生成html报告的效果如下:

 

5555.png


总结

Nmon是常用的性能监控工具,常用的nmon_analyser.xlsm工具分析nmon的方法在性能自动化中并不适用,因而介绍了使用python脚本直接分析nmon文件并获得性能指标数据的方法。