阅读目录

1. 安装InfluxDB

2. 安装Grafana

3. 配置Jmeter

序章

前几天在群里看到大神们在讨论Jmeter + InfluxDB + Grafana监控。说起来Jmeter原生的监控确实太丑了。当年不断安慰自己说“丑一点没关系,只要能用,好用,就行了!”。但是内心并不是这样,做为一名测试人员,都有一颗精益求精的心。看到有东西可以替代那原生的监控数据,果断亲自动手部署了一套。

是吧,很帅吧!数据是用InfluxDB来存储的,展示则是用Grafana来展示的

InfluxDB是一个年轻的时序数据库,是用同样很年轻的语言“GO”开发出来的。小数据量的时候还性能还不错,但是数据量大一点,性能问题就体现出来了。不过只是收集一下我几个小时测试的数据,还是足够了。要是几个月的测试数据那还是挑别的数据库吧。

Grafana是纯粹用js编写出来的,专门用来展示数据用的。

基本上,就是Jmeter通过“Backend Listener”,将测试的数据上传到我的虚拟机上,通过InfluxDB来存储,Grafana来展示出来。我们访问web,稍微配置一下,就可以看到展示的数据了。

我的InfluxDB和Grafana都是部署在一台Linux虚拟机下面的。

虚拟机 --- IP 192.168.245.131

1. 安装InfluxDB

新建InfluxDB下载源

cat << EOF | tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

使用yum下载InfluxDB

yum install -y influxdb

修改InfluxDB的配置,主要配置jmeter存储的数据库与端口号,还有需要将UI端口开放

[root@localhost ~]# vi /etc/influxdb/influxdb.conf
 
# 找到graphite并且修改它的库与端口
[[graphite]]
  enabled = true
  database = "jmeter"
  bind-address = ":2003"
  protocol = "tcp"
  consistency-level = "one"
 
# 找到admin,将前面的#号去掉,开放它的UI端口
[admin]
  # Determines whether the admin service is enabled.
  enabled = true # The default bind address used by the admin service.
  bind-address = ":8083" # Whether the admin service should use HTTPS.
  # https-enabled = false # The SSL certificate used when HTTPS is enabled.
  # https-certificate = "/etc/ssl/influxdb.pem

启动InfluxDB

[root@localhost ~]# /etc/init.d/influxdb restart
Stopping influxdb...
influxdb process was stopped [ OK ]
Starting influxdb...
influxdb process was started [ OK ]

打开浏览器,访问虚拟机IP“http://192.168.245.131:8083”

如果启动成功应该会InfluxDB的web ui界面。查看有没有jmeter库,没有就新建一个。

在输入框中,输入如下,来新建库:

CREATE DATABASE "jmeter"

2. 安装Grafana

使用yum下载Grafana并且安装

yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.1-1.x86_64.rpm

启动Grafana

[root@localhost ~]# /etc/init.d/grafana-server restart
OKopping Grafana Server ...                                [  OK  ]
Starting Grafana Server: .... OK

打开浏览器,访问虚拟机IP“http://192.168.245.131:3000”

输入用户名,密码登录系统。用户名与密码都是"admin"

添加需要展示数据的数据库

添加InfluxDB数据库配置。输入帐号密码“admin / admin”,点击Test & Save 提示“Success”说明成功了

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

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

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

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

3. 配置Jmeter

1. jmeter中,添加“监听器 -> Backend Listener”

2. 配置“Backend Listener”,主要配置Host,如下图

3. 添加一个Java请求,方便测试。(因为想偷懒,Java请求我什么都不用写,直接运行就能成功)

4. 添加“监听器 -> 查看结果树” 运行一下Jmeter,主要看Java请求是否发送出去了

没有什么问题,这个时候访问InfluxDB“http://192.168.245.131:8083”, 在输入框中输入如下,点击回车:

# 可以使用这个,这个是查询所有表,显示1条记录
select * from /.*/ limit 1
 
# 也可以使用这个,这个是显示所有表
show measurements

点击回车后,就应该有数据了,会出现下图:

这个时候再回来配置Grafana,来展示这些数据

添加一个展示项目

点击“Home -> New”

添加一个图表

点击旁边的绿点“Add Panel -> Graph”

配置图表

配置好了,就能看到图了。如果看不到图,请用Jmeter多发几次Java请求。下图中选择监控的选项,可以在Jmeter的官网上查看到对应的解释。

大致介绍几种我常用的监控。

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

【注意】如果要监控<请求名称>的话,Jmeter上的“Backend Listener”修改如下参数

1. 将“summanyOnly”修改成False,

2. 将“userRegexpForSamplersList”修改成True,

3. 并且要设置“samplersList”的值,“samplersList”是可以支持正则表达式的,“samplersList”的设置要与请求对应,否则找不到该请求。如图

设置好了,运行一下,在Grafana里面,就可以看到自己的请求了。

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

最后来一张帅气的图:

Jmeter + Grafana + InfluxDB 性能测试监控的更多相关文章

  1. [转]Jmeter + Grafana + InfluxDB 性能测试监控

    https://www.cnblogs.com/yyhh/p/5990228.html Jmeter + Grafana + InfluxDB 性能测试监控 效果不错

  2. 搭建Jmeter + Grafana + InfluxDB性能测试监控环境

    背景 Jmeter原生的实时监控每半分钟收集一次数据,只能在Linux控制台查看日志输出,界面看起来不直观,图表报告只能等压测结束后才能生成.如下图为jmeter在Linux下运行的实时日志: 那么如 ...

  3. 基于Docker 部署Jmeter + Grafana + InfluxDB 性能测试监控配置(亲测可用)

    工具介绍: InfluxDB:是一款用Go语言编写的开源分布式时序.事件和指标数据库,无需外部依赖.该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, lo ...

  4. Grafana+Influxdb+Telegraf监控mysql

    Grafana+Influxdb+Telegraf监控mysql 一.安装 1.1安装Grafana+influxdb+telegraf 1.2启动服务,添加开机启动 1.3查看grafana界面 二 ...

  5. Docker+Jmeter+InfluxDB+Grafana搭建性能测试监控平台

    搭建需求? jmeter自身的聚合测试报告可视化效果极差,为更加形象的.动态的展示测试过程,需要一个具有时序性的可视区来展示给我们的测试者, 这时候就需要用到后端监控,下面我们来开始搭建符合这种测试需 ...

  6. JMeter+Grafana+Influxdb搭建可视化性能测试监控平台(待继续完善。。。)

    influxdb下载.安装.配置.启动 InfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统. 下载: ...

  7. JMeter+Grafana+Influxdb搭建可视化性能测试监控平台(使用了docker)

    [运行自定义镜像搭建监控平台] 继上一篇的帖子 ,上一篇已经展示了如何自定义docker镜像,大家操作就行 或者 用我已经自定义好了的镜像,直接pull就行 下面我简单介绍pull下来后如何使用 拉取 ...

  8. 借助Docker搭建JMeter+Grafana+Influxdb监控平台

    我们都知道Jmeter提供了原生的结果查看,既然有原生的查看结果,为什么还要多此一举使用其他工具进行查看呢,除了查看内容丰富外还有最主要的原因:Jmeter提供的查看结果插件本身是比较消耗性能的,所以 ...

  9. Jmeter Grafana Influxdb 环境搭建

    1.软件安装 1.Grafana安装 本文仅涉及Centos环境 新建Grafana yum源文件 /etc/yum.repos.d/grafana.repo [grafana] name=grafa ...

随机推荐

  1. 常用prototype函数

    $("spcode").value --取得当前页面的值的value,可以赋值 $F('spcode')         --不能赋值 $!spcode             - ...

  2. lua自定义迭代器

    迭代器 http://www.tutorialspoint.com/lua/lua_iterators.htm 迭代器能够让你遍历某个集合或者容器中的每一个元素. 对于lua来说, 集合通常指代 ta ...

  3. CLI:使用Go开发命令行应用

      原文地址 CLI或者"command line interface"是用户在命令行下交互的程序.由于通过将程序编译到一个静态文件中来减少依赖,一次Go特别适合开发CLI程序.如 ...

  4. Thinkphp 中 distinct 的用法

    TP中distinct()的用处主要是去除重复的值 在Thinkphp手册中也详细说明了(链接:http://document.thinkphp.cn/manual_3_2.html#distinct ...

  5. OEIS A140358

    以前也许做过? 有点方 最小整数1到k 加减得到 n 1+-2+-3+-...+-k = n 求最小k #include <cstdio> #include <algorithm&g ...

  6. 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分

    在实用VS编程的时候大家经常会遇到一个问题: 下面小编来为大家提供一个简单的解决方案: 1.在Windows中打开功能里输入regedit,回车打开注册表编辑器: 2.转到路径HKEY_LOCAL_M ...

  7. python3爬取网页

    爬虫 python3爬取网页资源方式(1.最简单: import'http://www.baidu.com/'print2.通过request import'http://www.baidu.com' ...

  8. 关于跨域GET、POST请求的小结//////////////////////zzzzzzz

    JQuery:$.ajax/$.getJSON支持jsonp格式的跨域,但是只支持GET方式,暂不支持POST: so,跨域POST是个值得研究的问题啊!万能的JQuery无法跨域POST:鉴于基本国 ...

  9. linux系统无法启动解决方案

    windows和linux双系统一般先安装Windows,分两个主分区,把Linux安装在另外的主分区上.Linux编译内核,添加NTFS分区支持,然后Mount NTFS 分区即可访问Windows ...

  10. 非常强大的table根据表头排序,点击表头名称,对其内容排序

    js代码: /** * 通过表头对表列进行排序 * * @param sTableID * 要处理的表ID<table id=''> * @param iCol * 字段列id eg: 0 ...