Jmeter + Grafana + InfluxDB 性能测试监控

数据是用InfluxDB来存储的,展示则是用Grafana来展示的

一、软件下载

1、Grafana下载链接(Windows版本):https://grafana.com/grafana/download?platform=windows

2、InfluxDB下载方式():https://portal.influxdata.com/downloads/

不同系统的包

3、配置

a、针对influxdb,修改influxdb.conf文件(jmeter通过2003端口连接)

 

b、把http的8086端口的注释也去掉(grafana通过8086端口连),启用8086端口

 

c、启动influxdb,通过CMD到influxdb的目录下,直接命令: influxd -config influxdb.conf 

d、针对Jmeter,添加“监听器 -> Backend Listener”,并配置“Backend Listener”,主要配置Host

 e、针对grafana,到Grafana安装目录中的bin目录下,双击grafana-server.exe启动程序

       访问http://localhost:3000,用admin(密码admin)

配置:

第一步、配置数据库,在设置-->Data Sources,添加,配置以下画圈的部分就可以了,然后直接保存通过

 下载模板方式一:

下载模板:https://grafana.com/grafana/dashboards?dataSource=influxdb&direction=asc&orderBy=name&search=jmeter

模块下载方式二:  复制ID

 

 

第二步,在面板中添加Graph,选择Data Source为jmeter,在查询条件中,选择你要监控的指标,可以添选多个指标

配置好了,就能看到图了。如果看不到图,请用Jmeter多发几次请求。可以选择最右上角的监控时间段来精确化的监控指定时间段的测试数据:

 另外用这种测试模式,我们还可以达到Jmeter分布式集群的去中心化,让Master不再负责各节点测试数据的收集和处理(交给influxdb来完成),只专注于slave的调度,甚至可以进行多master-slave部署,由Jenkins进行同步调度测试。

附:几种我们常用的监控指标:

名称 描述
jmeter.all.h.count 所有请求的TPS
jmeter.<请求名称>.h.count 对应<请求名称>的TPS
jmeter.all.ok.pct99 99%的请求响应时间
jmeter.<请求名称>.ok.pct99 对应<请求名称>99%的请求响应时间
jmeter.all.test.startedT 线程数

为了能方便的同时启动influxDB和Grafana,我专门写了启动脚本,有两份,一份是windows版的,一份是Linux版的

Windows版的

@echo off
start cmd /k ""D:/software/influxdb-1.8.3_windows_amd64/influxdb-1.8.3-1/influxd.exe" -config "D:/software/influxdb-1.8.3_windows_amd64/influxdb-1.8.3-1/influxdb.conf""
cd /d d:
cd D:softwareGrafanagrafanain
start cmd /k grafana-server.exe

Linux版的(为了后台运行并且避免进程冲突,linux版的写的比较复杂一些):

#!/bin/bash
# Author:zheng
# Date:2018-04-18
InstanceCount=1
Cur_Dir=$(cd "$(dirname "$0")"; pwd)
influxdb_v=influxdb-1.5.1
grafana_v=grafana-5.0.4

chmod -R 777 $Cur_Dir/$influxdb_v/bin
chmod -R 777 $Cur_Dir/$grafana_v/bin

echo -n `date +'%Y-%m-%d %H:%M:%S'`
echo "----Current directory is " $PWD

# 检查$ProcessName实例是否已经存在
#while [ 1 ] ; do
#$PROCESS_NUM获取指定进程名的数目
PROCESS_NUM=`ps -ef | grep "influxd" | grep -v "grep" | wc -l`
if [ $PROCESS_NUM -lt $InstanceCount ];
then
StopCount=`expr $InstanceCount - $PROCESS_NUM `
echo -n `date +'%Y-%m-%d %H:%M:%S'`
echo "----influxd service [total $StopCount] was not started."
echo -n `date +'%Y-%m-%d %H:%M:%S'`
echo "----Starting influxd service[total $StopCount] ."
(nohup $Cur_Dir/$influxdb_v/bin/influxd -config $Cur_Dir/$influxdb_v/influxdb.conf) >>/dev/null 2>&1 &
else
PROCESS_PID=`pidof -s influxd | awk '{print $1}'`
echo -n `date +'%Y-%m-%d %H:%M:%S'`
echo "---kill influxd [pid $PROCESS_PID]"
pidof -s influxd | awk '{print $1}' | xargs kill -9
sleep 2
echo "----Restart influxd service[total $InstanceCount]."
(nohup $Cur_Dir/$influxdb_v/bin/influxd -config $Cur_Dir/$influxdb_v/influxdb.conf) >>/dev/null 2>&1 &
fi

PROCESS_NUM=`ps -ef | grep "grafana-server" | grep -v "grep" | wc -l`

if [ $PROCESS_NUM -lt $InstanceCount ];
then
StopCount=`expr $InstanceCount - $PROCESS_NUM `
echo -n `date +'%Y-%m-%d %H:%M:%S'`
echo "----grafana service [total $StopCount] was not started."
echo -n `date +'%Y-%m-%d %H:%M:%S'`
echo "----Starting grafana service[total $StopCount] ."
cd $Cur_Dir/$grafana_v/bin
(nohup ./grafana-server) >>/dev/null 2>&1 &
else
PROCESS_PID=`pidof -s grafana-server | awk '{print $1}'`
echo -n `date +'%Y-%m-%d %H:%M:%S'`
echo "---kill grafana-server [pid $PROCESS_PID]"
pidof -s grafana-server | awk '{print $1}' | xargs kill -9
sleep 2
echo "----Restart grafana service[total $InstanceCount]."
cd $Cur_Dir/$grafana_v/bin
(nohup ./grafana-server) >>/dev/null 2>&1 &
fi
sleep 2

Grafana作为一款轻量级的报表工具,功能还是很强大的,以下是我配置的指标效果图(有点花哨):

补充说明:

针对Jmeter的Backend Listener如果在implementation选项中选择第二项,我们将会得到不一样的监控效果:

重新配置一下参数:

 再次发起测试,我们会发现influxDB的表结构出现了变化,变成单独创建一个总的jmeter表(原来的方式是一个统计指标创建一张表,会有很多张表):

这样的表信息量大,可以方便构建更直观的监控视图:

【注意】URL的端口是8086,而刚才配置的8083是UI的端口。

    - 8083端口是InfluxDB的UI界面展示的端口

    - 8086端口是Grafana用来从数据库取数据的端口

    - 2003端口则是刚刚设置的,Jmeter往数据库发数据的端口

      

另外请确保2003或8086端口的连通性,监听数据发送依赖于相关端口。

文章转载于 https://smooth.blog.csdn.net/article/details/79926294?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

作者:

若有侵权,请联系我删除

原文地址:https://www.cnblogs.com/hecity/p/14253143.html