• 性能测试
  • Jmeter实时监控+SpringBoot接口性能实战
  • 自动化
  • SpringBoot
  • Java

Jmeter实时监控+SpringBoot接口性能实战

一、实验目的及实验环境

1.1、实验目的

通过springboot编写基于HTTP请求的get、post接口与jmeter集成进行压力测试。实现最新版本influxdb、grafana实时监控性能测试数据。本次实验所用用到的工具和编写的接口代码都会百度云链接分享给大家。

1.2、实验环境

工具

版本

IntelliJ IDEA

2017.2.7

mysql

8.0.15

InfluxDB

1.7.7

Grafana

6.2.5-1

Linux

CentOS release 6.5 (Final)

Jmeter

5.1.1

 

二、InfluxDB 简介

InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。

类似的数据库有Elasticsearch、Graphite等。

2.1、其主要特色功能

  1. 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
  2. 可度量性:你可以实时对大量数据进行计算
  3. 基于事件:它支持任意的事件数据

2.2、InfluxDB的主要特点

  1. 无结构(无模式):可以是任意数量的列
  2. 可拓展的
  3. 支持min, max, sum, count, mean, median 等一系列函数,方便统计
  4. 原生的HTTP支持,内置HTTP API
  5. 强大的类SQL语法
  6. 自带管理界面,方便使用

三、InfluxDB安装

 

3.1、查看系统版本

cat /proc/version

cat /etc/issue

 查看结果如图所示:

springboot监控task springboot监控接口性能_配置文件

3.2、RedHat & CentOS安装命令

Linux输入如下下载命令:

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.7.x86_64.rpm

下载完成以后,输入如下安装命令:

sudo yum localinstall influxdb-1.7.7.x86_64.rpm

 

3.3、安装JDK1.8版本

查看版本

rpm -qa | grep jdk

springboot监控task springboot监控接口性能_配置文件_02

卸载版本

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.181-2.6.14.10.el6.x86_64

安装JDK1.8版本

rpm -ivh jdk-8u60-linux-x64.rpm

 

四、修改influx的配置文件

4.1、Linux输入编辑命令修改配置文件

vim /etc/influxdb/influxdb.conf

源文件为如下:

springboot监控task springboot监控接口性能_springboot监控task_03

修改如下:

springboot监控task springboot监控接口性能_springboot监控task_04

4.2、修改完毕以后,重启动服务

service influxdb restart

4.3、查看服务是否启动

ps -ef |grep influxdb

springboot监控task springboot监控接口性能_数据库_05

4.4、端口说明   

 influxdb的两个http端口:8083和8086

  • port 8083:管理页面端口,访问localhost:8083可以进入你本机的influxdb管理页面;
  • port 8086:http连接influxdb client端口,一般使用该端口往本机的influxdb读写数据;

 

五、访问页面

5.1、输入IP地址和端口号进行访问

说明:之前老的版本可以访问,这次使用的是最新版本,没有访问界面了。此次只是给大家展示一下,看下效果。

http://192.168.15.140:8083/

springboot监控task springboot监控接口性能_数据库_06

 

六、在linux中常用命令

 

6.1、万能的帮助命令

influx -help

6.2、进入influx命令

influx

springboot监控task springboot监控接口性能_数据_07

 

6.3、查看influx状态

show stats

springboot监控task springboot监控接口性能_数据_08

6.4、显示所有的数据库

show databases

springboot监控task springboot监控接口性能_数据库_09

6.5、创建一个数据库

create database "jmeter"

6.6、查看该数据库下所有的表

show measurements

其它常用命令,大家自行查询即可。

七、Grafana简介

Grafana可以不用等待整个测试执行完成之后才来查看测试结果和数据,在整个测试过程中,数据可以实时输出并以动态图表的形式在前端展示,极大方便了性能测试人员对实时性能测试数据的监控,加上Grafana强大的图表展示,每个测试人员都可以搭建出自己喜欢的图形化页面,并实时与其他人员共享,完成对整个性能测试过程中的实时数据监控。

 



 

八、Grafana安装

8.1、下载安装命令

wget https://dl.grafana.com/oss/release/grafana-6.2.5-1.x86_64.rpm  

sudo yum localinstall grafana-6.2.5-1.x86_64.rpm 

安装遇到的小问题:

  1. wget无法安装,解决方案
  1. -->解决方法是加--no-check-certificate参数
  1. 另外一种下载方式
  1. -->curl -O -L https://dl.grafana.com/oss/release/grafana-6.2.5-1.x86_64.rpm 

 

8.2、启动命令

service grafana-server start

8.3、查看状态命令

/etc/init.d/grafana-server status

8.4、页面访问地址

IP地址加上默认端口号3000

http://192.168.15.140:3000

默认用户名、密码:admin/admin

springboot监控task springboot监控接口性能_配置文件_10

 

8.5、配置influx数据源

Add data source

springboot监控task springboot监控接口性能_数据_11

        输入参数信息,点击Add按钮

springboot监控task springboot监控接口性能_springboot监控task_12

配置成功如下图所示:

springboot监控task springboot监控接口性能_数据库_13

8.6、导入监控DashBoard配置

springboot监控task springboot监控接口性能_数据_14

springboot监控task springboot监控接口性能_配置文件_15

springboot监控task springboot监控接口性能_配置文件_16

点击import按钮即可完成配置。

 



至此,监控的基本配置已经全部搭建完毕。下面我们需要使用Springboot编写请求接口。

九、springboot编写接口

9.1、创建数据库、表结构


CREATE DATABASE `jmeter` /*!40100 DEFAULT CHARACTER SET utf8 */

CREATE TABLE `user_model` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  `phone` varchar(64) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `phone_index` (`phone`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8

user_model表,只传两个字段name/phone完成注册请求。

9.2、接口设计

  • /user/register -->用户注册接口
  • /user/get    -->查询用户接口

 

9.3、打包运行

springboot监控task springboot监控接口性能_springboot监控task_17

十、jmeter编写性能脚本

 

10.1、版本

  • 官网下载最新的版本即可

         

springboot监控task springboot监控接口性能_配置文件_18

10.2、编写请求脚本

springboot监控task springboot监控接口性能_配置文件_19

注册接口为例子,传参数name,phone(手机号唯一索引,不能重复)。post请求。

10.3、配置Backend Listener

springboot监控task springboot监控接口性能_数据_20

10.4、运行jmeter,查看监控指标

springboot监控task springboot监控接口性能_配置文件_21

 

本次实验所有工具以及代码分享。原则上大家只要安装运行,即可看到性能监测的效果展示。