jmeter+influxdb+grafana搭建压测监控平台

概述
  本文将介绍如何使用Jmeter+influxDB+Grafana搭建压测可视化实时监控html


痛点
  在使用jmeter作性能测试的时候,监控系统性能的时候,不管是使用插件仍是报告生成,都比较麻烦,好比监控服务的tps信息mysql

 

为了可以及时看到实时,而且比较美观的图表,咱们能够经过jmeter的AbstractBackendListenerClient类,使用Backend Listener发送数据到数据库的存储实时结果。
从jmeter2.13开始,Backend Listener提供一下功能:sql

  • 实时数据
  • 漂亮图表
  • 可以对比2个以上的测试计划

 

JMeter 3.2的Backend Listener中引入了 InfluxDBBackendListenerClient允使用UDP或HTTP协议将统计指标发送到InfluxDB shell

此类提供的功能:数据库

  • 实时数据
  • 漂亮图表
  • 可以对比2个以上的测试计划
  • 可以向图表添加注释
  • 只要jmeter产生相同的Backend,就能够存储监控数据

Influxdb简介
 InfluxDB是用Go语言编写的高性能、高可用的分布式时序数据存储数据库,无其余依赖,安装简单快速。
  该数据库如今主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。
InfluxDB特征:apache

  • 无结构(无模式):能够是任意数量的列
  • 能够设置metric的保存时间
  • 支持与时间有关的相关函数(如min、max、sum、count、mean、median等),方便统计
  • 支持存储策略:能够用于数据的删改。(influxDB没有提供数据的删除与修改方法)
  • 支持连续查询:是数据库中自动定时启动的一组语句,和存储策略搭配能够下降InfluxDB的系统占用量。
  • 原生的HTTP支持,内置HTTP API
  • 支持相似sql语法select * from mysql.user
  • 支持设置数据在集群中的副本数
  • 支持按期采样数据,写入另外的measurement,方便分粒度存储数据。

schemaless: 结构型数据库相似Mysql须要先定义列,influxdb无需预先定义,无结构的
与传统数据库中的名词比较vim

 influxDB中的名词  传统数据库的概念
 database  数据库
 measurement  数据库中的表
 points  表里面的一行数据

 

influxdb的points数听说明浏览器

  • time:默认存储数据会有时间,时间无需关心,会帮咱们自动插入
  • tags:用来存储数据标识,好比CPU.idle
  • fileds:用来存储数据 value=90

influxdb下载安装
下载:
[root@jmeter ~]#wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm --no-check-certificate
百度网盘下载地址:https://pan.baidu.com/s/13hKY22krYSLTs9_A2O7KVA
提取码:sc9z
安装
[root@jmeter opt]# rpm -ivh influxdb-1.7.0.x86_64.rpm
Preparing... ########################################### [100%]
1:influxdb ########################################### [100%]
安装完以后,生成默认的配置文件 /etc/influxdb/influxdb.conf 架构

修改influxDB配置文件
在配置文件中找到graphite配置项,去掉前面的“#”号
[root@jmeter opt]# vim /etc/influxdb/influxdb.conf less

[[graphite]]
# Determines whether the graphite endpoint is enabled.
enabled = true
database = "jmeter"    # 数据库名称
retention-policy = ""
bind-address = ":2003"    # 端口
protocol = "tcp"
consistency-level = "one"

修改如下信息
[meta]
dir = "/usr/local/influxdb/meta"    #存放最终存储的数据,文件以.tsm结尾
[data]
dir = "/usr/local/influxdb/data"    #存放数据库元数据 wal
wal-dir = "/usr/local/influxdb/wal"    #存放预写日志文件

修改HTTP端口信息
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true

# The bind address used by the HTTP service.
bind-address = ":8086"

 

建立目录更新权限
[root@jmeter ~]#mkdir -p /usr/local/influxdb/
[root@jmeter ~]#chown -R influxdb:influxdb /usr/local/influxdb/
修改完成以后,可使用如下命令启动influxDB服务
两种方法:
一、[root@jmeter ~]# influxd -config /etc/influxdb/influxdb.conf

二、添加到环境变量中(推荐)
[root@jmeter ~]# vim /etc/profile
export INFLUXDB_CONFIG_PATH=/etc/influxdb/influxdb.conf
[root@jmeter ~]# source /etc/profile
[root@jmeter ~]# influxd &
influxDB的tcp端口:8088
查看端口有没有起来
[root@jmeter ~]# netstat -anp|grep 8088
influxDB数据库操做

[root@jmeter ~]# influx    # 登陆数据库
Connected to http://localhost:8086 version 1.6.0
InfluxDB shell version: 1.6.0
> show databases    # 查看数据库
name: databases
name
----
_internal
jmeter
> create database "jmeter"    # 建立数据库
> use jmeter    #切换数据库
Using database jmeter
> create user "admin" with password '123456' with all privileges    # 建立管理员权限的用户

 

Jmeter配置

  • 建立一个测试计划,并添加Backend Listenter,Backend Listener implementation 选择org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient
  • 添加线程
  • 设置influxDB IP及端口
  • 运行测试,等待几秒看数据

 

 

 

端口说明

2003端口:Jmeter往数据库发数据的端口
8086端口,Grafana从数据库取数据的端口

查看Jmeter数据库的表信息

[root@jmeter ~]# influx
Connected to http://localhost:8086 version 1.6.0
InfluxDB shell version: 1.6.0
> show measurements
ERR: database name required
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".
> show databases
name: databases
name
----
_internal
jmeter
> use jmeter
Using database jmeter
> show measurements
name: measurements
name
----
jmeter.all.a.avg
jmeter.all.a.count
jmeter.all.a.max
jmeter.all.a.min
jmeter.all.a.pct90
jmeter.all.a.pct95
jmeter.all.a.pct99
jmeter.all.h.count
jmeter.all.ko.avg
jmeter.all.ko.count
jmeter.all.ko.max
jmeter.all.ko.min
jmeter.all.ko.pct90
jmeter.all.ko.pct95
jmeter.all.ko.pct99
jmeter.all.ok.avg
jmeter.all.ok.count
jmeter.all.ok.max
jmeter.all.ok.min
jmeter.all.ok.pct90
jmeter.all.ok.pct95
jmeter.all.ok.pct99
jmeter.all.rb.bytes
jmeter.all.sb.bytes
jmeter.test.endedT
jmeter.test.maxAT
jmeter.test.meanAT
jmeter.test.minAT
jmeter.test.startedT

这个时候已经能够将统计数据成功发送到InfluxDB

Grafana和influxDB数据源配置
什么是Grafana
Grafana是一款可视化工具,大多使用在时序数据的监控方面,如同Kibana相似。Grafana的UI更加灵活,有丰富的插件,功能强大,数据源可使用zabbix、influxdb等
grafana的下载和安装
官网:https://grafana.com/grafana/download
下载地址:https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.1-1.x86_64.rpm
安装:rpm -ivh grafana-5.2.1-1.x86_64.rpm

启动
[root@jmeter ~]# service grafana-server start
Starting Grafana Server: ... [ OK ]

浏览器访问:http://IP:3000/login
grafana的默认用户名密码都是admin,第一次登陆会要求更改密码

建立influxDB数据源

 

单击save & Test,提示:data source is working,说明保存和链接成功

建立dashboard

新建Graph面板

数据绑定

 

选择influxdb的数据源库名,jmeter的相关表

查看SQL语句

定义显示的名称

保存数据模板
直接按ctrl+s或点击保存按钮

 

 

说明:想要了解这些监控都表明什么意思,能够访问Jmeter的官网地址去查看阅读“http://jmeter.apache.org/usermanual/realtime-results.html”

线程数/用户相关指标
test.minAT-Min active threads:最小活跃线程数
test.maxAT-Max active threads:最大活跃线程数
test.meanAT-Mean active threads:活跃线程数
test.startedT-Started threads:启动线程数
test.endedT-Finished threads:结束线程数
响应时间指标
.ok.count:采样器的成功响应数
.h.count:每秒点击数
.ok.min:采样器成功最短响应时间
.ok.max:采样器成功最长响应时间
.ok.avg:采样器成功平均响应时间
.ok.pct:采样器成功响应百分比
.ko.count:采样器失败响应数
.ko.min:采样器失败的响应最短期
.ko.max:采样称失败最长响应时间
.ko.avg:采样器失败平均响应时间
.ko.pct:采样器失败响应百分比
.a.count:采样器响应数(ok.count和ko.count的总和)
.a.min:采样器最小响应时间(ok.count和ko.count的最小值)
.a.max:采样器最大响应时间(ok.count和ko.count的最大值)
.a.avg:采样器平均响应时间(ok.count和ko.count的平均值)
.a.pct:采样器响应百分比(根据和失败样本的总数计算)
Backend Listener的默认百分位设置为“90;95;99”,即百分位数为90%,95%和99%。
Graphite使用点(“.”)去拆分的元素,这可能与十进制百分位值混淆。JMeter转换任何此类值,用下划线(“ - ”)替换点(“.”)。例如,“99.9 ”变为“99_9 ”
默认状况下,JMeter发送在samplerName“all”下累计的全部采样器的指标。 若是配置了 BackendListenerSamplersList,那么JMeter还会发送匹配样本名称的指标,前提是配置 summaryOnly=true

 

压测中的效果

导入Dashboard模版
从Grafana官网下载相应的模板
官网模版库:https://grafana.com/dashboards
搜索看板模版

 

下载:jmeter load test

 

下载的jar包复制到jmeter的/lib/ext下面

导入模板

加载模板文件

选择模板数据源

重启jmeter,选择rocks.nt.apm.jmeter.JMeterinfluxDBBackendListenerClient,输入influxDB的host和端口,以前建立用户名和密码

 

压测的效果图

 

软件测试技术交流:【 687136491 】

功能测试,自动化测试,性能测试,测试开发,测试架构方面的技术问题欢迎与加群与我交流,加群时请备注下:博客园-芳姐

 

转载时,请注明:https://www.cnblogs.com/mike-liu/p/10080351.html

相关文章
相关标签/搜索