locust压测结果接入到grafana

840 阅读2分钟

Locust + influxDB + grafana

参考:locust-influxdb-listener

前提:

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

数据源名称:便于识别自己项目数据

数据库名称&用户名&密码:自己设置的,且要与程序中的匹配

image.png

step3:grafana配置dashboard

导入json文件

文件地址:github.com/pjcalvo/loc…

image.png

step4:运行locust压测脚本

locust -f demo.py

step5:即可在grafana后台中查看到对应压测数据

会有多个以influxDB为数据源的测试结果,在这里选择自己创建的数据源

image.png

Locust + Prometheus + grafana

前提:

1.  需要Prometheus服务器到压测服务器是通的(因为要在Prometheus配置文件中增加压测服务器的job)
2.  需要有本机到压测服务器的防火墙(如果要用web模式启动locust脚本的话;如果用no-web模式启动脚本则不需要)

目前的易用性不高,待后续优化,主要体现在:

1.  在grafana平台上无法区分不同项目

step1:将prometheus_exporter文件添加到自己的项目中,prometheus_exporter文件详见附件

目的:Prometheus 根据配置定时来拉取 Metric 信息就可以为 Grafana 所用了(就是把测试结果暴露出来,供grafana使用)

注:要保证 以下两个函数名一致!!

image.png

step2:将项目导入到压测服务器上

(目前这个服务器locust是可用的,且Prometheus配置中的locust相关配置只配置了该服务器的locust端口)

step3:执行压测(以下为web模式启动)

启动master:locust --master -f prometheus_exporter.py 

启动worker:locust --worker -f demo.py

step4:启动locust web页面 

输入参数

image.png

step5:登录grafana平台查看测试报告

选择面板 Locust for Prometheus(id:12081)

image.png