方便操作的采集神器(Web自动化库开发实现了针对Grafana平台的图表截图截图的本地化工具)

优采云 发布时间: 2021-10-20 18:07

  方便操作的采集神器(Web自动化库开发实现了针对Grafana平台的图表截图截图的本地化工具)

  一、背景介绍

  IT 系统的性能测试和优化是一项复杂且具有挑战性的任务。它主要是通过某种特定的方式,按照一定的策略,对被测系统施加压力,以获得系统的响应时间和运行效率。、资源利用率等指标来评价系统是否满足用户性能需求。其中,重要环节之一是监控系统的运行状态,实时查看CPU、内存等系统资源数据,并记录情况,以便定位系统瓶颈问题,找到系统运行方向。性能优化。加我VX:attstudy-js回复“测试”,进入软件测试学习交流裙~~

  

  随着业务和技术的飞速发展,用于部署IT系统的环境资源的种类和数量不断增加。如何方便的将系统环境的各种资源的使用记录保存到本地,以便后续的对比分析,是目前测试人员在日常工作中需要面临的问题。

  本文使用Selenium Web自动化库为Grafana平台的图形截图开发并实现了一个本地化工具。该工具可以指定监控服务器,指定性能时间段,并将时间段服务器相关性能图的截图保存到本地。

  二、监控可视化工具Grafana

  Grafana 是一个开源的测量分析和可视化分析平台,可以在查询采集的数据后进行可视化展示,并具有通知告警的功能。

  Grafana 工具有以下六个特点:

  1)可视化:具有多种选项的快速灵活的客户端图形。面板插件提供了许多不同的视觉指示器。

  2)通知提醒:以可视化的方式定义最重要的指标报警规则。Grafana 会持续计算并发送通知,并在数据达到阈值时执行警报通知。

  3)动态仪表盘:使用模板变量创建动态和可重用的仪表盘。这些模板变量显示为仪表板顶部的下拉菜单。

  4)数据源:Prometheus、Graphite、InfluxDB、OpenTSDB等数据源,也支持自定义数据源。

  5)注解:注解来自不同的数据源图表。将鼠标悬停在事件上以显示完成的事件元数据和标记。

  6)过滤器:过滤允许动态创建新的键/值过滤器,这些过滤器将自动应用于所有使用该数据源的查询。

  

  图 1 Grafana 可视化监控数据示例

  Grafana 可视化工具功能强大,还具有分享和截图功能。但是,快照是在线保存的,查看历史监控图表不是很方便。因此,我有了制作自动化小工具的想法。

  三、 基于Selenium的Grafana自动化截图工具

  Selenium 是一种用于 Web 应用程序测试的工具。它可以直接在浏览器中运行,通过一系列命令模拟用户操作。近年来,Selenium 已被越来越多的公司用作 Web 自动化测试的轻量级框架。支持在IE、Firefox、Safari、Chrome、Android手机浏览器等多种浏览器上进行测试。

  使用Selenium实现自动化测试时,主要需要以下三部分:

  1)测试脚本:可以是用Python或Java编写的脚本程序。

  2)浏览器驱动:根据不同浏览器开发驱动。不同的浏览器使用不同的Webdriver驱动,需要对应对应的浏览器版本。

  3)浏览器:Selenium 目前支持市面上大部分浏览器。

  本文实现的Grafana监控图表自动截图小工具是基于Selenium开发的。

  在Grafana平台进行性能测试时手动查看系统监控数据的步骤是登录平台,选择服务器IP,设置查看时间段,最后点击确定按钮,Grafana平台会自动汇总时间段内的所有数据,以图表的形式在表格中显示。

  基于Selenium框架,使用Python编写自动化程序,实现无需手动打开浏览器,指定服务器IP和时间段,自动将时间段的监控图表保存到本地,然后直接在本地查看。

  

  图2 实施流程

  1、 手动传递参数

  使用 Python 的 Argparse 库实现参数获取。argparse 是 Python 自带的命令行参数解析包。当代码需要频繁修改参数时,可以使用该工具进行代码分离,使代码更加简洁。

  

  图3 指定参数说明

  2、网址拼接

  分析特定时间段Grafana平台查询生成的URL,发现URL拼接规律,实现URL拼接。

  通过Grafana平台服务启动的IP地址和端口号可以访问Grafana平台。接下来选择被监控服务器的地址和被监控的性能测试周期,Grafana会跳转到对应Dashboard的界面。平台接入时,用户选择的起止标准时间“%Y-%m-%d %H:%M:%S”转换为13位时间戳,最后拼接的网址。通过以上分析,实现了动态参数传递,将标准时间转换为时间戳函数,得到拼接后的URL。

  3、浏览器自动发送HTTP请求,无接口模式

  示例项目使用 Google Chrome 版本 7.6。首先需要将对应版本的谷歌浏览器驱动和python.exe放在同一个目录下,这样即使不手动指定浏览器驱动位置,也可以让Selenium自动打开浏览器。

  Selenium 默认为浏览器弹出模式。由于运行后我们只需要看到所需监控图表的相应截图,就不需要在前台看到打开浏览器、选择时间段、截图等一系列操作。因此,我通过 chrome_options.add_argument('headless') 设置浏览器无接口无头模式。接下来指定webdriver.Chrome(),通过driver.get(url)启动对第一步拼接的url的自动访问。

  4、JS 脚本获取整个网页

  通常在同一台服务器上部署了很多监控信息。使用Grafana查看时,需要使用下拉框。直接截图只能实现浏览器当前页面的截取,所以可以通过JS脚本获取整个网页。使用time.sleep()函数推迟调用线程的执行,通过driver.execute_scrip()函数执行JS脚本,获取延迟1秒内整个页面的宽高数据。

  5、截图并保存到本地

  通过driver.set_window_size(width, height)方法将浏览器的宽高设置为通过JS脚本获取的数据,然后使用time.sleep()推迟线程1秒,期间截图操作整个网页被执行。截图过程由driver.save_screenshot(pic_name)函数执行,页面会根据给定的宽高保存到本地。完成上述操作后,关闭浏览器。

  6、打包为应用程序

  为了方便工具的推广和使用,使用pipinstaller工具将整个程序以及代码中用到的相关依赖打包成一个应用程序exe文件。运行成功后,相关截图也会保存在当前应用的同级目录中。

  图4 应用和本地化截图

  下面是自动截图工具的操作演示:

  

  图5 自动化截图工具演示

  

  图6 本地保存的截图

  四、总结

  本文介绍的基于Selenium的自动化截图工具,让我们在性能测试时无需频繁在浏览器中打开Grafana监控页面,就可以在本地查看需要的监控数据,方便了系统资源的历史监控查询也方便了很多,大大提高工作效率。后续我们会结合实际工作对工具进行优化完善,使其适应更复杂的场景。加我VX:attstudy-js备注“测试”,进入软件测试学习交流裙~~

  来自“ITPUB博客”,链接:,如需转载请注明出处,否则将追究法律责任。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线