专栏文章 基于 windows 的 locust+influxdb+grafana 性能测试结果展示

追风 · 2023年01月15日 · 最后由 追风 回复于 2023年01月28日 · 6256 次阅读

最近在做性能测试相关的工作,基于之前做接口测试和 UI 自动化测试,所以在做测试的过程中总是没有单单考虑测试本身,也同时考虑了后面结果展示的部分。

做性能测试,对时间点很关心,所以存储结果最好是用时序数据库。而 grafana 对于各种数据库的兼容导致它成了最近也是最方便的选择。

本次实现,会分别在 windows 和 linux 上部署,windows 为测试,linux 为长期使用。本篇为 windows 相关的配置和部署。

locust

这部分的实现,主要突出的问题就是将 locust 脚本以 headless 模式运行,同时将运行 log 分别输出到两份 log 文件中便于后期对 log 的处理。

locust -f test_locust.py --host=hostIP --csv=result --headless -u 100 -r 50 --run-time=100 --logfile=locust.log --loglevel=INFO 1>run.log 2>&1

这样在运行时,相关的信息都会输出到 run.log 这个文件中,便于后期的文件处理。

关于文件处理,需要另外写一个 py 文件,这个 py 文件需要一直运行以实现以下功能:

  • 获取当前 run.log 的行数
  • 与上次获取的行数做对比,如果有变化(一般情况为行数增加,如果为减少,那么则是新的一轮测试),则计算增加的行数
  • 对增加的行数进行分析,通过 split() 等方法取出想要的数据
  • 将数据插入时序数据库

influxdb

关于 influxdb,这里趟过的比较大的一个坑就是版本的问题。网上很多教程都是基于 influxdb1.0 的,而最新的版本是 2.6,这个版本网上教程很少,而且在 windows 的环境下你是无法启动命令行来对数据库进行操控的(或者是有方法,但是我不知道,欢迎大佬指正)。同时,当你连接到 grafana 的时候,必须选择 Flux 作为脚本语言来对数据库进行增删改查,无疑又增加了使用成本。所以,这里推荐使用 influxdb1.8 的稳定版本。别的,就没什么了,可以使用类 sql 语言对 influxdb 进行增删改查,语句去自行百度即可。

grafana

常规的 grafana 的安装和使用,就不提了。这里主要想说一下上面提到过的 influxdb 的版本,当你使用 1.8 的版本的时候,那么你的语言可以选择 InfluxSQL,这样就可以和其他关系型数据库一样使用 sql 语句进行数据的操作。

关于 dashboard,这里面有一个小事情就是如果你想让比方说 Time Series 图表显示两条线,那么你需要用两个 query。

以上,就是整个关于 locust+influxdb +grafana 的搭建,当然整个搭建只是基于脚本的,没有对 cpu 等性能进行监控。之后一篇会是 linux 的搭建,届时会更新对于 cpu 等的监控。最后上一张搭建好的图

共收到 2 条回复 时间 点赞

也可以通过 locust 的 hook,将测试结果 (TPS、响应时长之类的) 和事件信息(什么时候开始启动的测试,什么时候结束的测试,多少并发数)直接存储到 influxDB

Maxim 回复

是的,方法其实有很多种,只要能达到目的都可以的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册