Locust + influxDB + grafana
前提:
1. 压测服务器(本机)可以访问influxDB
用这种方式展示locust压测结果的好处:
1. 只申请一次防火墙,(到influxDB的防火墙);
2. 不同的项目的压测结果存储到自己的数据库中,同一个dashboard可以切换数据源来展示不同项目的结果;
step1:安装插件
pip install locust-influxdb-listener
step2:使用
将这段代码插入到locust运行文件中,代码中的数据库名称,会在后续grafana添加数据源时使用
from locust_influxdb_listener import InfluxDBListener, InfluxDBSettings
@events.init.add_listener
def on_locust_init(environment, **_kwargs):
"""
Hook event that enables starting an influxdb connection
"""
# this settings matches the given docker-compose file
influxDBSettings = InfluxDBSettings(
influx_host = 'localhost',
influx_port = '8086',
user = 'admin',
pwd = '123456',
**database = 'db_name'**
)
# start listerner with the given configuration
InfluxDBListener(env=environment, influxDbSettings=influxDBSettings)
以下为在influxDB中创建数据库操作:(influxDB的一些配置相关操作)
$ influx
> show databases
> CREATE DATABASE db_name
> use db_name
> create user "admin" with password '123456' with all privileges
step3:grafana添加数据源
数据源选择:influxDB
数据源名称:便于识别自己项目数据
数据库名称&用户名&密码:自己设置的,且要与程序中的匹配
step3:grafana配置dashboard
导入json文件
step4:运行locust压测脚本
locust -f demo.py
step5:即可在grafana后台中查看到对应压测数据
会有多个以influxDB为数据源的测试结果,在这里选择自己创建的数据源
Locust + Prometheus + grafana
前提:
1. 需要Prometheus服务器到压测服务器是通的(因为要在Prometheus配置文件中增加压测服务器的job)
2. 需要有本机到压测服务器的防火墙(如果要用web模式启动locust脚本的话;如果用no-web模式启动脚本则不需要)
目前的易用性不高,待后续优化,主要体现在:
1. 在grafana平台上无法区分不同项目
step1:将prometheus_exporter文件添加到自己的项目中,prometheus_exporter文件详见附件
目的:Prometheus 根据配置定时来拉取 Metric 信息就可以为 Grafana 所用了(就是把测试结果暴露出来,供grafana使用)
注:要保证 以下两个函数名一致!!
step2:将项目导入到压测服务器上
(目前这个服务器locust是可用的,且Prometheus配置中的locust相关配置只配置了该服务器的locust端口)
step3:执行压测(以下为web模式启动)
启动master:locust --master -f prometheus_exporter.py
启动worker:locust --worker -f demo.py
step4:启动locust web页面
输入参数
step5:登录grafana平台查看测试报告
选择面板 Locust for Prometheus(id:12081)