locust可视化压测平台

2022-04-27 15:35:37 浏览数 (3)

背景

前段时间,公司项目需要压测某个服务.公司所有使用的都是locust作为压测脚本,该项目延续使用locust.

用过locust的小伙伴应该都知道,locust工具本身提供一个web平台,可以实时查看数据,但是也有缺点:数据不能存储,所有测试数据存在了内存中,重启以后测试数据会消失.

当时的需求是陆续压测几天,需要有一份能持续对比的压测数据,所以想把locust持久化存储.

解决方案

基于之前使用jmeter的方案,继续沿用 grafana prometheus prometheus_exporter. 使用prometheus存储locust产出的压测的数据,grafana作为前端页面展示数据.

安装依赖

python3-devel

代码语言:javascript复制
sudo yum  install python3-devel

locust

代码语言:javascript复制
pip3 install locust==1.6(版本必须一样)

安装prometheus

prometheus

代码语言:javascript复制
docker pull prom/prometheus

prometheus.yml

代码语言:javascript复制
global:
  scrape_interval:     10s
  evaluation_interval: 10s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus

  - job_name: locust

    metrics_path: '/export/prometheus'
    static_configs:
      - targets: ['127.0.0.1:8089']  # 地址修改为实际地址
        labels:
          instance: locust

启动命令

代码语言:javascript复制
docker run -p 9091:9090 -v 

graph

代码语言:javascript复制
http://127.0.0.1:9091/graph

prometheus_exporter

prometheus_exporter.py

代码语言:javascript复制
https://github.com/myzhan/boomer/edit/master/prometheus_exporter.py

prometheus_client

代码语言:javascript复制
https://github.com/prometheus/client_python
pip3 install prometheus_client

启动master(采集数据)

代码语言:javascript复制
locust --master -f prometheus_exporter.py

demo脚本

代码语言:javascript复制
# !/usr/local/bin/python
# -*- coding:utf-8 -*-
from locust import HttpUser, TaskSet, task, between

class NoSlowQTaskSet(HttpUser):
    host = "http://aibot.speech.api.autohome.com.cn/"
    @task
    def index_page(self):
        r = self.client.get("/")

启动worker脚本

代码语言:javascript复制
locust --worker -f demo.py

服务器设置保留端口,Locust的Web页面

配置服务器8089端口

代码语言:javascript复制
http://127.0.0.1:8089

grafana前端

docker命令

代码语言:javascript复制
docker run  -d --name grafana -p 3000:3000   -v /data/grafana:/var/lib/grafana  grafana/grafana

配置面板

grafana展示效果

0 人点赞