当前位置: 首页 > news >正文

性能测试-从0到1搭建性能测试环境Jmeter+Grafana+influxDB+Prometheus+Linux

课程:B站大学
记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师
性能测试环境:Jmeter+Grafana+InfluxdDB+Prometheus+Linux

从0到1搭建性能测试环境

  • 工具介绍
    • Jmeter
    • Grafana
    • InfluxdDB
    • Prometheus
    • Linux
  • 典型性能测试架构
  • 实战开始
    • 配置一台云服务器
    • 阿里云实例安装docker
  • 实践是检验这里的唯一标准


工具介绍

Jmeter

Apache JMeter 是一款开源的性能测试工具,主要用于 Web 应用、API、数据库的负载测试,支持多线程并发模拟,生成测试报告,并可集成到 CI/CD 流程。

Grafana

Apache JMeter 是一款开源的性能测试工具,主要用于 Web 应用、API、数据库的负载测试,支持多线程并发模拟,生成测试报告,并可集成到 CI/CD 流程。

InfluxdDB

InfluxDB 是一个高性能的时序数据库(Time-Series Database),专为监控和指标存储优化,常用于存储 JMeter 或 Prometheus 采集的性能数据,支持快速查询和分析。

Prometheus

Prometheus 是一款开源的监控和告警工具,采用 Pull 模式采集指标数据,适用于容器化环境和微服务架构,常与 Grafana 结合使用进行可视化监控。

Linux

Linux 是性能测试环境的基础操作系统,提供稳定的运行环境,支持 Docker、Kubernetes 等容器化部署方式,并可通过命令行工具(如 top、vmstat)进行系统资源监控。

典型性能测试架构

  • JMeter 模拟用户请求 → InfluxDB 存储测试数据 → Grafana 可视化展示
  • Prometheus 监控服务器/应用指标 → Grafana 展示实时性能趋势
  • Linux 作为底层系统,运行 JMeter、数据库及监控组件

实战开始

配置一台云服务器

这里我选择阿里云的云服务器,开放安全组规格,允许grafana3000端口,influxdb8086、8090、8083端口,http80端口,https443端口
在这里插入图片描述

阿里云实例安装docker

linux:centos8.0
更新软件

sudo yum update

卸载旧版本 (如果安装过旧版本的话)

sudo yum remove docker docker-common docker-selinux docker-engine

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo (这个是官方源,很慢)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo (阿里的源,较快)

可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

这里我查看仓库中所有的docker版本

在这里插入图片描述
安装指定版本的docker

sudo yum install docker-ce- 3:26.1.3-1.el8

将root添加到docker组,以便您能够执行Docker命令,而无需使用sudo,安装完成之后需要重启ssh session。

sudo usermod -a -G docker root

启动docker

sudo systemctl start docker # 
(sudo systemctl enable docker) #开机启动 生产环境建议开启
sudo docker --version #查看Docker版本

安装Compose,运行compose.yml
compose.yml是docker的配置文件,方便我通过配置文件一键安装好所有的docker容器以及配置

pip3 install docker-compose

docker-compose.yml如下:

version: '3.1'services:influxdb:image: influxdb:1.8container_name: influxdbports:- "8083:8083"- "8086:8086"- "8090:8090"environment:- INFLUXDB_DB=db0- INFLUXDB_ADMIN_USER=${INFLUXDB_USERNAME}- INFLUXDB_ADMIN_PASSWORD=${INFLUXDB_PASSWORD}volumes:- influxdb-storage:/var/lib/influxdbgrafana:image: grafana/grafana:latestcontainer_name: grafanaports:- "3000:3000"environment:- GF_SECURITY_ADMIN_USER=${GRAFANA_USERNAME}- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}depends_on:- influxdbuser: "0"volumes:- grafana-storage:/var/lib/grafana- ./grafana-provisioning/:/etc/grafana/provisioningvolumes:influxdb-storage:chronograf-storage:grafana-storage:

这里我使用的是个人版本的influxdb1.8,2.0+的版本需要企业收费的
运行运行docker-compose,安装influxdb和grafana
docker-compose up -d
运行成功后用:docker ps命令查看
设置环境文件.env, 主要是设置用户名和密码
在和docker-compose.yml同级目录下创建.env环境文件

vim .env

vim的使用大家可以百度下,功能好用的噢
在这里插入图片描述

在这里插入图片描述

访问grafana图形界面
http://IP(云服务器公网ip):3000
初始密码为:admin/admin
首次登陆grafana会要求设置新密码
在这里插入图片描述

登陆到grafana主页之后,创建新的Data Source:
在这里插入图片描述

配置Database,选择InfluxDB(注意点:开源的grafana支持influxdb1.8):
在这里插入图片描述
在这里插入图片描述
输入InfluxDB信息,如果没做更改的话user和pwd都是默认的root, 为了安全自行修改。
在这里插入图片描述
在这里插入图片描述
Dashboards导入Jmeter模板
到Dashboards去下载:https://grafana.com/grafana/dashboards
也可直接访问:https://grafana.com/grafana/dashboards/5496
复制该模板的ID 或者URL
在这里插入图片描述
导入模板ID:
在这里插入图片描述
在这里插入图片描述
然后可以进行命名,填入之前建好的DataSource 名字,设置发送时间,保存即可。
在这里插入图片描述
然后转到刚刚建好的主页,如下图,右上角可以设置:
在这里插入图片描述

设置界面,可更具你的需要进行设置,比如下面两个点分别是设置时间显示和刷新频率。

接下来就准备运行Jmeter ,生成数据,看看效果。
挑选了一些URL,对其进行简单的运行并返回数据。
在这里插入图片描述
jmeter运行后,登录http://<公网ip>:3000/访问,查看数据面板

在这里插入图片描述
总结:
搭建其实也很简单,一个配置文件就搞定,但是想要更好地应用到实践中的话需要对Grafana Dashboard做更多的优化和设置。
另外Grafana+Prometheus+Jmeter这种方式不过就是换一个DataBase,将InfluxDB换成Prometheus,理念大体一样,很细微的差别。
Grafana+Prometheus+Jmeter:用于监控系统cpu 内存、线程进程等
Grafana+influxdb+Jmeter:用于监控压力测试的系统性能指标。

实践是检验这里的唯一标准

http://www.dtcms.com/a/292563.html

相关文章:

  • Redis RDB 持久化实现原理,请求是否阻塞,如何处理阻塞请求
  • 【运维】SGLang 安装指南
  • Vue的ubus emit/on使用
  • 嵌入式 Qt 开发:实现开机 Logo 和无操作自动锁屏
  • 项目集成zustand后,如何构建和使用,以及devtools函数。
  • 新能源工厂的可视化碳中和实验:碳足迹追踪看板与能源调度策略仿真
  • React 项目性能瓶颈分析
  • SCSAI项目管理智能体设计方案核心设计思路:分层开放架构
  • GitOps实践:基于Argo CD的Kubernetes集群应用持续交付实战指南
  • 智慧能源驱动数字孪生重介选煤新模式探索
  • 力扣 78.子集
  • 【element-ui el-table】多选表格勾选时默认勾选了全部,row-key绑定异常问题解决
  • EasyMan 数字人服务全面焕新,交互型AI数字人助推孪生体验全新升级
  • 等保2.0详解:筑牢数字时代安全基石
  • 【GIT】基础知识及基本应用
  • 如何加固Endpoint Central服务器的安全?(上)
  • Linux驱动-中断-共享队列
  • 【size_t 类型转换】ans = max(ans, (int)occ.size());
  • 公司内部网址怎么在外网打开?如何让外网访问内网的网站呢?
  • qtbase5-dev库使用介绍
  • 5.6 指令流水线 (答案见原书 P267)
  • windows10设置了软件开机自启,为啥不自启动
  • iOS 抓包工具有哪些?场景导向下的工具推荐与实战对比
  • Vue3 面试题及详细答案120道(16-30 )
  • SonarQube+Git
  • Dify-13: 文本生成API端点
  • 使用mybatis实现模糊查询和精准查询切换的功能
  • Cy3-NH2 花菁染料Cy3-氨基,星戈瑞
  • CMOS知识点 物理气相沉积
  • ECMAScript(简称 ES)和 JavaScript 的关系