当前位置:Gxlcms > 数据库问题 > Jmeter + Grafana + InfluxDB 性能测试监控

Jmeter + Grafana + InfluxDB 性能测试监控

时间:2021-07-01 10:21:17 帮助过:13人阅读

数据是用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,添加,配置以下画圈的部分就可以了,然后直接保存通过

技术图片

第二步,在面板中添加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 ""%~dp0influxdb-1.5.1/influxd.exe" -config "%~dp0influxdb-1.5.1/influxdb.conf""
cd "%~dp0grafana-5.0.4\bin"
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

作者:smooth-z

若有侵权,请联系我删除

Jmeter + Grafana + InfluxDB 性能测试监控

标签:medium   star   for   process   ack   graph   连接   data   count   

人气教程排行