自动采集器(2.工具介绍与设计工具实现的基本思想是逐个扫描指定路径)
优采云 发布时间: 2021-08-30 01:06自动采集器(2.工具介绍与设计工具实现的基本思想是逐个扫描指定路径)
1.Background
在性能测试的过程中,往往需要对服务器的性能进行监控,并记录这些性能指标的结果。无论是数据库服务器还是云下的应用服务器,都可以通过nmon进行监控,设置点间隔和点数,将性能指标保存成nmon文件,使用Excel插件等工具Nmon_Analyzer、Java GUI工具nmon visualizer等读取nmon文件内容,分析采集结果。
但是,当监控的服务器数量较多时,性能指标导致多个nmon文件依次采集会很耗时。同时,手动读取和记录数据也可能因记录错误而导致意外错误。因此,我们可以尝试使用我们熟悉的编程语言,比如Python,开发一个简单易实现的小工具,用于在nmon文件中自动采集performance test性能测试指标。
2. 工具介绍与设计
该工具的基本思想是将指定路径下的nmon文件逐一扫描,根据nmon文件的内部格式提取目标性能指标数据,然后对提取的数据进行处理,得到结果,并自动将结果保存到新生成的 Excel 文件中。为了更直观的获取用户输入的nmon文件路径和结果的保存路径,我们可以编写GUI界面,使用界面上的文本输入框来获取用户的输入,使用界面上的按钮触发这个采集事件。
图 1 工具设计流程图
3. 工具实现
(1)import 需要的模块
因为我们的工具包括对文件和路径的操作,所以这需要由 os 模块来实现。逐行读取nmon文件内容时,使用codecs提供的open方法指定打开文件的语言编码,读取时会自动转换为内部unicode。 re 模块是 Python 中用于匹配字符串的唯一模块。它使用正则表达式对字符串进行模糊匹配并提取您需要的字符串部分。使用此模块,您可以执行模糊匹配的逐行扫描,以找到 CPU 和内存之间的相关性。表现。 xlwt 库的作用是将数据写入 Excel 表格。 Tkinter 是 Python 的标准 GUI 库。导入 Tkinter 模块后,您可以使用控件快速创建 GUI 应用程序。 tkinter.StringVar 可以自动刷新字符串变量,可以使用 set 和 get 方法传递和取值来接收用户输入。
图2代码-导入需要的模块
(2)window的实现
使用Tkinter模块创建窗口,插入输入框控件,获取用户输入的路径信息。输入框的内容存放在StringVar中,按钮Button设置为绑定鼠标点击事件。
图3窗口代码实现
图 3 窗口的实现
(3)写事件代码-求平均CPU利用率的函数
不同版本的nmon文件内部格式略有不同。因此,在编写程序时,首先要了解目标版本的内部结构,以确定字符串模式匹配时需要使用nmon文件中性能指标相关内容的哪些特征。 .
为了计算平均值,您需要获取 nmon 文件中记录的点数。通过了解 nmon 文件中的 AAA 参数是关于操作系统和 nmon 本身的一些信息,您可以找到提取它的行。
图4代码-获取点数和点间隔
CPU_ALL参数是所有CPU的概览,显示所有CPU的平均占用率,将记录的CPU占用率一一取出存入数组,求数组元素的平均值,即,整个监控期间CPU的平均使用率,函数返回值。
图 5 代码-查找平均 CPU 使用率
(4)写事件代码-求内存平均占用率的函数
同理,通过MEM参数获取内存使用情况。与 CPU 情况不同,该参数行收录多个与内存相关的指标。在监控性能指标时,我们经常使用公式1来计算内存占用,所以需要从MEM参数中提取相关指标,包括memtotal、memfree、cached、buffers,根据公式计算,返回内存占用率。
Formula 1 常用的内存占用计算公式
图 6 Code-Seeking 内存使用率
(5)Write 事件代码-鼠标点击事件
该事件用于绑定界面上的按钮,实现按钮点击时的一系列操作:从输入框中获取nmon文件路径和目标保存路径,生成Excel文件并创建工作表,并在表头内容中写入默认值,调用计算平均CPU使用率函数和计算平均内存使用率函数,将返回值写入Excel文件并保存。
图 7 Code-鼠标点击事件
4.总结
该工具是一种基于Python语言的简单实践,可以自动批量提取nmon文件中的性能指标结果,并可以利用这个思路根据需要修改或扩展该工具的功能。使用此工具自动采集性能结果比手动读取值节省时间,避免记录错误时的意外错误,有助于提高准确性和测试效率。
文章 首发于:自动化测试实战篇:基于Python实践性能指标结果的自动化采集tools