[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[Python3]输出JMeter执行结果到google电子表格[gspread]

你好。
这是 SS 队的 Shimeji。
我有时会参与负载测试项目,但我懒得记录每次JMeter执行结果,所以我创建了一个脚本,将执行结果输出到Google Spreadsheet。
让我们自动化吧! !

提前准备

您需要提前准备以下三项内容。
・启用 Google Drive API / Google Sheets API
・下载私钥(JSON 数据)
・电子表格共享设置

查看下面的所有内容!
https://console.developers.google.com/

另外,请务必提前安装必要的软件包。
*如果你使用的是CentOS7,下面的命令就可以了!

yum 安装 python3 python-devel jq pip3 安装 gspread pip3 安装 oauth2client

脚本 1(Python)

这是一个 Python 脚本,它将指定为电子表格的命令行参数的 csv 输出。
Python 有一个有用的名为“gspread”的用于操作电子表格的库,所以我很高兴能够使用它。

#!/usr/bin/python3 import gspread import json import csv import sys import itertools # 使用绝对路径指定密钥 SECRETJSON = "/usr/local/jmeter/bin/sacred-drive.json" # 定义电子表格密钥 SPREADSHEET_KEY = ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' ################################################ #### ########################## ## Function # 数字和字符转换器 def num2alpha(num): if num<=26 : return chr(64 +num) elif num%26==0: 返回 num2alpha(num//26-1)+chr(90) else: 返回 num2alpha(num//26)+chr(64+num%26) ##### ################################################## #################### ## 身份验证 # Promise from oauth2client.service_account import ServiceAccountCredentials range = ['https://spreadsheets.google .com/feeds','https ://www.googleapis.com/auth/drive'] # 定义下载的json文件credentials = ServiceAccountCredentials.from_json_keyfile_name(SECRETJSON, range) # 登录Google API gc = gspread.authorize(credentials) # 打开sheet 1电子表格工作表 = gc.open_by_key(SPREADSHEET_KEY).sheet1 ######################################## ######################################## ## 处理 # 获取命令行参数 args = sys .argv csvfile = args[1] # 将 CSV 文件的内容赋值给数组 with open(csvfile) as fp: results_list_ex = list(csv.reader(fp)) # 二维数组转换为一维数组results_list = list(itertools.chain.from_iterable(results_list_ex)) # 初始化计数变量 COUNT_NUM = 1 # 搜索空行 while str(len(worksheet.cell(COUNT_NUM, 1).value)) != "0": COUNT_NUM + = 1 # 指定编辑范围 cell_list = worksheet.range('A'+str(COUNT_NUM)+':'+num2alpha(len(results_list))+str(COUNT_NUM)) # results_list in cell_list 为 i,cell 分配数组in enumerate(cell_list): cell.value = results_list[i] # 保存结果 worksheet.update_cells(cell_list)

以下两点需要根据环境进行适当调整。
- 在“SECRETJSON”中指定Google API私钥文件。
- 请在“SPREADSHEET_KEY”中指定输出结果的工作表的键。

该Python脚本将在下面描述的shell脚本中使用。

脚本2(shell脚本)

#!/bin/sh DATE=$(date +"%Y%m%d") OPTIME=$(date +"%Y%m%d-%H%M%S") # 指定结果输出目的目录LOGDIR=/var/www/html/${DATE} # 指定JMX文件 FILE_JMX=/usr/local/jmeter/bin/templates/build-web-test-plan.jmx # 创建日期目录 mkdir -p ${ LOGDIR} # 运行 JMeter /usr/local/jmeter/bin/jmeter -Dsun.net.inetaddr.ttl=0 -n -t ${FILE_JMX} -j ${LOGDIR}/${OPTIME}.log -l ${ LOGDIR} /${OPTIME}.jtl -e -o ${LOGDIR}/${OPTIME}/ -r # 创建 CSV 文件 cat ${LOGDIR}/${OPTIME}/statistics.json | jq -r ".grep " Total " > ${LOGDIR}/${OPTIME}/statistics.csv # 将结果输出到电子表格 /usr/local/bin/main.py ${LOGDIR}/${OPTIME}/statistics.csv

这就像将 json 格式的结果输出格式化为 csv 并将其传递给 Python 脚本。
脚本的处理内容为:
1)运行JMeter
2)将json格式结果转换为csv

其附加到电子表格中

使用示例

我们来尝试一下吧!

[root@test-server2-1 bin]# ./start-controller_cui.sh 创建摘要器<summary>使用 /usr/local/jmeter/bin/templates/build-web-test-plan.jmx 成功创建树配置远程引擎:192.168.33.11 启动远程引擎开始测试 @ Thu Jun 25 04:59:38 JST 2020 ( 1593028778488) 远程引擎已启动 正在等待端口 4445 上可能的 Shutdown/StopTestNow/HeapDump/ThreadDump 消息 摘要 = 2 in 00:00:02 = 1.2/s 平均值:215 最小值:139 最大值:291 错误:0 (0.00%)正在整理远程 @ Thu Jun 25 04:59:41 JST 2020 (1593028781684) ...运行结束 [root@test-server2-1 bin]# ls /var/www/html/20200625/20200625-033715_th/statistics. csv /var/www/html/20200625/20200625-033715_th/statistics.csv

是的,它起作用了!看起来 CSV 文件也已创建。
让我们检查一下重要的电子表格。

我做到了。
我们再试一次吧!

下一行正确输出。好的!

在最后

它怎么样?
如果你使用Python丰富的库,你可以很容易地实现它。

另外,将来我想改进该功能,以便可以同时输出以下项目。

1. 执行时间 (YYYY/MM/DD hh:mm:ss)
2. JMeter 执行参数
、控制器数量
、从机数量
、线程数量
、循环数量
、灯亮起时间
3. 通过 JMeter 链接输出到 HTML 文件的

那么好吧。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
1,379
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

姬菇

证书:
- TOEIC 835
- LPIC304
- AWS 解决方案架构师助理
- AWS 解决方案架构师专业
- GCP 专业云架构师
- IPA SC(未注册)

戈薇,戈薇,
我身后的老头,就这样了。

这是我叔叔。 (2018)