locust结合Prometheus和grafana
【摘要】
一、Locust介绍
一个开源性能测试工具,使用 Python 代码来定义用户行为。用它可以模拟百万计的并发用户访问你的系统,方便、高效、可分布式等
二、工具安装
环境python3
pip install locust
pip install -i https://pypi.tuna.tsinghua....
一、Locust介绍
一个开源性能测试工具,使用 Python 代码来定义用户行为。用它可以模拟百万计的并发用户访问你的系统,方便、高效、可分布式等
二、工具安装
环境python3
pip install locust
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn locust
三、locust类库介绍
Httpuser类:就是用户行为的操作
Client方法:发送请求
Task类:任务控制的类,权重,跳过等
Taskset类:测试集类
On_start方法:类似于自动化中的setup,每个虚拟用户执行前都会执行这个方法
On_stop方法:类似于自动化中的teardown,每个虚拟用户执行结束后执行这个方法
@task装饰器,如果task后面带有数字,则代表的是测试集中的权重。参数越大每次被虚拟用户执行的概率越高。如果不设置默认为1
Between方法中的是休眠时间:会取between数值中间的随机数
Locust中还有其他很多类,我暂时没用到,有兴趣可以下去了解下,非常不错的一款性能工具
四、locust使用
Windows
我这里使用的是云服务器2c4g, 带宽:8Mbps
代码:以登录vsite网站来压吧 100并发
# coding=utf-8
"""
@Project :pachong-master
@File :test001.py
@Author :gaojs
@Date :2022/5/19 21:47
@Blogs : https://www.gaojs.com.cn
"""
from locust import HttpUser, between, task, TaskSet, tag
import os
# 强制去掉控制台InsecureRequestWarning
import urllib3
# 随机产生UA类库
from faker import Factory
urllib3.disable_warnings()
class TaskTest(TaskSet):
def on_start(self):
"""
description:每个用户执行压测之前都会获取随机数和数字签名
:return:
"""
# 每个用户执行压测之前都会获取随机数和数字签名
# print('====================清理log结束,压测开始, 获取随机数和数字签名!!!========================')
pass
# 压测任务,也可以是@task(10)啥的,这个数字是代表权重,数值越大,执行的频率就越高
@task
def stress_get(self):
"""
登录虚拟站点
:return:
"""
url = '/prx/000/http/localh/login'
data = {
"Content-Type": "application/x-www-form-urlencoded, charset=UTF-8",
'Connection': 'close',
"method": "method1",
"uname": "t",
"pwd1": None,
"pwd2": None,
"pwd": "t",
"submitbutton": "Sign In"
}
randon_ua = Factory.create()
ua = randon_ua.user_agent()
headers = {
'User-Agent': ua
}
rsp = self.client.post(url=url, headers=headers, data=data, verify=False, allow_redirects=False, name='loginVsite压测')
# print(rsp.status_code)
print(rsp.text)
assert rsp.status_code == 302
# 执行并发测试后执行的动作,比如保存log等操作,查看报告http://localhost:8089/
def on_stop(self):
pass
class UserBehavior(HttpUser):
host = '192.168.120.209'
# 每次请求停顿时间
wait_time = between(3, 10)
tasks = [TaskTest]
if __name__ == "__main__":
os.system("locust -f test004.py --host=https://192.168.120.209 --web-host=127.0.0.1")
执行
十秒起100个虚拟用户
报告
charts
RPS
分析结果:
平均相应时间:
吞吐量:1000以内
最小相应时间:
最大响应时间:
网络是否有波动:
带宽是否影响:
Linux版本
代码locust_test.py
执行命令
./locust -f locust_test.py -u 3000 -r 60 --headless -t 10m --print-stats
报告:动态刷新
可视化监控
Prometheus(普罗米修斯) + grafana
压测前的指标:10000并发
压测后的指标:
压测结束后:
locust执行结果
压测:500并发
Grafana监控:
五、locust参数介绍
参数名称 参数值 参数说明
-h, --help 不带参数 查看帮助信息
-H HOST, –host=HOST HOST 指定被测试的主机,采用以格式:http://10.21.32.33
–web-host=WEB_HOST WEB_HOST 指定运行 Locust Web 页面的主机,默认为空 “。
-P PORT, –port=PORT, –web-port=PORT PORT 指定 –web-host 的端口,默认是8089
-f LOCUSTFILE, –locustfile=LOCUSTFILE LOCUSTFILE 指定运行 Locust 性能测试文件,默认为: locustfile.py
–csv=CSVFILEBASE, –csv-base-name=CSVFILEBASE CSVFILEBASE 以CSV格式存储当前请求测试数据。
–master 不带参数 Locust 分布式模式使用,当前节点为 master 节点。
–slave 不带参数 Locust 分布式模式使用,当前节点为 slave 节点。
–master-host=MASTER_HOST MASTER_HOST 分布式模式运行,设置 master 节点的主机或 IP 地址,只在与 –slave 节点一起运行时使用,默认为:127.0.0.1.
–master-port=MASTER_PORT MASTER_PORT 分布式模式运行, 设置 master 节点的端口号,只在与 –slave 节点一起运行时使用,默认为:5557。注意,slave 节点也将连接到这个端口+1 上的 master 节点。
–master-bind-host=MASTER_BIND_HOST MASTER_BIND_HOST 做分布式压测时,指定分机IP。只用于master。如果没有指定,默认是所有可用的IP(即所有标记主机IP的slave)
–master-bind-port=MASTER_BIND_PORT MASTER_BIND_PORT 做分布式压测时,指定分机port。默认是5557与5558。
–no-web no-web -c 和 -r 配合 模式运行测试,需要 -c 和 -r 配合使用.
-c NUM_CLIENTS, –clients=NUM_CLIENTS NUM_CLIENTS 指定并发用户数,作用于 –no-web 模式。
-r HATCH_RATE, –hatch-rate=HATCH_RATE HATCH_RATE 指定每秒启动的用户数,作用于 –no-web 模式。
-t RUN_TIME, –run-time=RUN_TIME RUN_TIME 设置运行时间, 例如: (300s, 20m, 3h, 1h30m). 作用于 –no-web 模式。
-L LOGLEVEL, –loglevel=LOGLEVEL LOGLEVEL 选择 log 级别(DEBUG/INFO/WARNING/ERROR/CRITICAL). 默认是 INFO.
–logfile=LOGFILE LOGFILE 日志文件路径。如果没有设置,日志将去 stdout/stderr
–print-stats 不带参数 在控制台中打印数据
–only-summary 不带参数 只打印摘要统计
–no-reset-stats 不带参数 Do not reset statistics once hatching has been completed。
-l, –list 不带参数 显示测试类, 配置 -f 参数使用
–show-task-ratio 不带参数 打印 locust 测试类的任务执行比例,配合 -f 参数使用.
–show-task-ratio-json 不带参数 以 json 格式打印 locust 测试类的任务执行比例,配合 -f 参数使用.
-V, –version 不带参数 查看当前 Locust 工具的版本.
六、测试报告参数介绍
报告数据:
type:请求方式
name:请求路径的api
requests:请求数
fails:请求失败数
Median:中位数,响应时间,单位毫秒
Average:平均数,响应时间,单位毫秒
Min:最小响应时间,单位毫秒
Max:最大响应时间,单位毫秒
Content Size:单个请求大小,单位为字节
reqs/sec:每秒请求数,相当于jmeter的tps
charts:
实时统计的rps
实时统计平均响应时间
实时统计虚拟用户数
七、linux服务器部署可视化监控
Docker部署
Prometheus(普罗米修斯) + grafana
非常炫酷的可视化监控以及丰富的监控插件,以及监控的对象,根据不通的监控需求,选择不同的模板ID,监控的内容非常详细
具体部署步骤:https://blog.csdn.net/qq_41870111/article/details/120953313
文章来源: blog.csdn.net,作者:懿曲折扇情,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_41332844/article/details/126837468
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)