安装Docker
MAC平台
Windows平台
Ubuntu平台
Centos7平台
安装并启用influxDB
安装influxDB
1 | # 安装 |
Jmeter
设置
添加Backend Listener
【后端监听器】
只需修改三个字段:
- influxdbUrl:修改为实际的
influxdb
地址 - application:应用名称
- testTitle:测试标题
检查jmeter
和数据库是否正常连接
在jmeter
中添加Http请求,并执行测试
在influxdb
后台中查询是否有产生数据:
1 | # 进入容器内部 |
性能监控平台Grafana
部署及初始化
grafana
部署
1 | # 安装 |
平台初始化设置
- 本地登录地址:http://localhost:3000
- 默认用户名/密码:admin/admin
- 在Web平台中添加influxdb数据库
JMeter Dashboard
设置 填入其中的JSON内容
使用Grafana
平台进行自动化压测实践
- 对被测的
jmeter
脚本的线程数
进行参数化设置
该设置主要用于在后面脚本中进行线程数的修改,从而达到执行不同并发下的测试 - 测试脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
export jmx_template="jmeterScript"
export suffix=".jmx"
export jmx_template_filename="${jmx_template}${suffix}"
export os_type=`uname`
# 需要在系统变量中定义jmeter根目录的位置,如下
export jmeter_path="/opt/apache-jmeter/"
# 清空nohup.out
cat /dev/null > nohup.out
# 强制杀掉JMeter进程
killJMeter()
{
pid=`ps -ef|grep jmeter|grep java|awk '{print $2}'`
echo "jmeter Id list :$pid"
if [[ "$pid" = "" ]]
then
echo "no jmeter pid alive"
else
kill -9 $pid
fi
}
# 设置执行5次测试,每次的线程数分别是【10、20、30、40、50】
# 每次测试的持续时间,由jmeter脚本中的调度器【Scheduler】的持续时间(秒)【Duration(seconds)】来定
thread_number_array=(10 20 30 40 50)
for num in "${thread_number_array[@]}"
do
# 生成对应压测线程的jmx文件
export jmx_filename="${jmx_template}_${num}${suffix}"
export jtl_filename="test_${num}.jtl"
rm -f ${jmx_filename} ${jtl_filename}
cp ${jmx_template_filename} ${jmx_filename}
echo "生成jmx压测脚本 ${jmx_filename}"
if [[ "${os_type}" == "Darwin" ]]; then
# Mac下执行该语句
sed -i "" "s/thread_num/${num}/g" ${jmx_filename}
else
# Linux下执行该语句
sed -i "s/thread_num/${num}/g" ${jmx_filename}
fi
# JMeter 静默压测
nohup ${jmeter_path}/bin/jmeter -n -t ${jmx_filename} -l ${jtl_filename} &
sleep 65
killJMeter
rm -f ${jmx_filename}
done
echo "自动化压测全部结束" - 测试结果的展现
服务器的使用情况监控
获取服务器监控数据
1
2# 每秒采集一次,采集300次,生成文件名:"主机名_年月日_时分.nmon",如:"su-stable-007_191031_1814.nmon"
nmon -ft -s 1 -c 300安装
nmon2influxdb
导入采集的数据到
influxdb
中1
2
3
4
5
6root@su-stable-007:~# ./nmon2influxdb import su-stable-007_191031_1814.nmon
2019/10/31 18:20:26 Using configuration file /root/.nmon2influxdb.cfg
2019/10/31 18:20:26 Creating InfluxDB database nmon_reports
2019/10/31 18:20:26 NMON file separator: ,
####
File su-stable-007_191031_1814.nmon imported : 28800 points !在
influxdb
查询已导入的nmon
数据1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46root@su-stable-007:~# influx
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> show databases
name: databases
name
----
telegraf
_internal
jmeter
nmon_reports
nmon2influxdb_log
> use nmon_reports
Using database nmon_reports
> show measurements
name: measurements
name
----
CPU_ALL
DISKBSIZE
DISKBUSY
DISKREAD
DISKWRITE
DISKXFER
JFSFILE
MEM
NET
NETPACKET
PROC
VM
> select * from MEM
name: MEM
time host name value
---- ---- ---- -----
1572538454000000000 su-stable-007 active 2740.8
1572538454000000000 su-stable-007 bigfree -1
1572538454000000000 su-stable-007 buffers 226.3
1572538454000000000 su-stable-007 cached 3511.5
1572538454000000000 su-stable-007 highfree -0
1572538454000000000 su-stable-007 hightotal -0
1572538454000000000 su-stable-007 inactive 1470.1
1572538454000000000 su-stable-007 lowfree -0
1572538454000000000 su-stable-007 lowtotal -0
1572538454000000000 su-stable-007 memfree 3509.7
1572538454000000000 su-stable-007 memshared -0
1572538454000000000 su-stable-007 memtotal 7983.1导入面板
1
2
3
4
5
6root@su-stable-007:~# ./nmon2influxdb dashboard su-stable-007_191031_1814.nmon
2019/10/31 19:35:02 Using configuration file /root/.nmon2influxdb.cfg
2019/10/31 19:35:02 json: cannot unmarshal number into Go value of type grafanaclient.DataSourcePlugin
root@su-stable-007:~# ./nmon2influxdb dashboard su-stable-007_191031_1814.nmon
2019/10/31 19:41:46 Using configuration file /root/.nmon2influxdb.cfg
2019/10/31 19:41:47 Dashboard uploaded to grafana导入时,可能会出现上面第一次失败的情况,可以多试几次;也可能需要自己手动创建
DataSource
,因为从上面看出来并没有自动创建DataSource
。
理论上的情况如下:1
2
3
4root@su-stable-007:~# ./nmon2influxdb dashboard su-stable-007_191031_1814.nmon
2019/10/31 19:41:46 Using configuration file /root/.nmon2influxdb.cfg
2019/10/31 19:41:47 Grafana nmon2influxdb DataSource created.
2019/10/31 19:41:48 Dashboard uploaded to grafana此步操作会创建一个
grafana
的面板,并新建一个DataSource
,需要自己手动修改一下DataSource
的HTTP-URL