前言

  • 本篇文章引用了小菠萝测试笔记,大部分内容非原创,基于自身实操过程中,完善了部分。
  • 本篇随笔是在Linux上搭建的,后面会补充在docker以及k8s上如何部署安装

工具介绍

工具

介绍

Jmeter

压测工具

InfluxDB

Go 语言开发的一个开源分布式时序数据库,非常适合存储指标、事件、分析等数据

Grafana

Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表、显示图表等,支持二次开发

Centos8安装InfluxDB

InfluxDB 官网下载路径:https://portal.influxdata.com/downloads/

安装InfluxDB

  1. wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.3.x86_64.rpm
  2. sudo yum localinstall influxdb-1.6.3.x86_64.rpm

修改配置文件

  1. vim /etc/influxdb/influxdb.conf

【http】模块

  • 8086端口:Grafana访问Influxdb数据库的端口

enabled = true bind-address = ":8086"

【graphite】模块

  • database = “jmeter” 写入到Influxdb哪个数据库,此处配置了jmeter,相当于jmeter压测工具写入数据到Influxdb的jmeter数据库中(配置文件配置了,但是库还没有,需要自己创建)
  • 2003端口:Jmeter连接数据库,写入数据的端口
  1. enabled = true
  2. database = "jmeter"
  3. retention-policy = ""
  4. bind-address = ":2003"
  5. protocol = "tcp"
  6. consistency-level = "one"

启动InfluxDB

  • 启动命令: systemctl start influxdb.service
  • 查看状态命令: systemctl status influxdb.service
  • 备注:如果启动后,配置文件未生效(jmeter压测工具写入数据到Influxdb的jmeter数据库报错),执行命令
  1. cd /etc/influxdb/
  2. influxd -config influxdb.conf

创建InfluxDB的jmeter数据库

  1. 进入influxdb数据库命令行:influx -precision rfc3339
  2. 查看当前有哪些数据库:show databases
  3. 创建【graphite】模块配置的database:create database jmeter
    退出influxdb数据库命令行:exit

Influxdb数据库部分操作已全部完成

Centos8安装Grafana

安装Grafana

wget https://dl.grafana.com/oss/release/grafana-6.5.2-1.x86_64.rpm sudo yum localinstall grafana-6.5.2-1.x86_64.rpm

启动Grafana

启动命令: systemctl start grafana-server.service

查看状态命令: systemctl status grafana-server.service

访问Grafana

  • 访问Grafana的端口为3000,由于端口未配置进出站规则,所以暂时无法访问(当然如果你防火墙没开,就没有这个问题),需要配置Linux防火墙相关参数
  1. 开放3000端口:firewall-cmd --zone=public --add-port=3000/tcp --permanent
  2. 更新进出站规则:firewall-cmd --reload
  • 访问Grafana,当前Linux系统IP地址(ifconfig)加3000端口号
  • 用户名密码均是admin

Jmeter压测工具

往Influxdb数据库写入数据,通过监听器的后端监听器实现

后端监听器配置

运行Jmeter脚本,查看数据库数据是否写入

命令行进入Influxdb数据库,发现数据成功写入

  1. influx -precision rfc3339
  2. show databases
  3. use jmeter
  4. show measurements

Jmeter压测工具写入Influxdb数据含义

Influxdb生成的表前缀含义

  • jmeter.all :代表了所有请求;当后端监听器选项summaryOnly=true时,只有samplerName=all的表
  • jmeter.get :使用get方法的HTTP请求
  • jmeter.post :使用post方法的HTTP请求

Influxdb生成的表数据含义

  • 跟Jmeter线程组设置相关的表
  • jmeter.:是后端监听器rootMetricsPrefix选项配置
指标 含义
jmeter.test.minAT 最小活跃线程数
jmeter.test.maxAT 最大活跃线程数
jmeter.test.meanAT 平均活跃线程数
jmeter.test.startedT 启动线程数
jmeter.test.endedT 结束线程数

请求响应时间指标的表

  • 重点:每个sampler都包含了所有响应时间指标,每个sampler的每个指标都会有单独的一个表存储结果数据
  • jmeter.get/post.:后端监听器rootMetricsPrefix选项配置+实际请求的方法
  • <percentileValue>:后端监听器percentiles选项配置,展示百分之多少的数据
指标 含义
jmeter.get/post.ok.count sampler的成功响应数
jmeter.get/post.h.count 服务器每秒命中次数(每秒点击数,即TPS)
jmeter.get/post.ok.min sampler响应成功的最短响应时间
jmeter.get/post.ok.max sampler响应成功的最长响应时间
jmeter.get/post.ok.avg sampler响应成功的平均响应时间
jmeter.get/post.ok.pct<percentileValue> sampler响应成功的所占百分比
jmeter.get/post.ko.count sampler的失败响应数
jmeter.get/post.ko.min sampler响应失败的最短响应时间
jmeter.get/post.ko.max sampler响应失败的最长响应时间
jmeter.get/post.ko.avg sampler响应失败的平均响应时间
jmeter.get/post.ko.pct<percentileValue> sampler响应失败的所占百分比
jmeter.get/post.a.count sampler响应数(ok.count+ko.count)
jmeter.get/post.sb.bytes 已发送字节
jmeter.get/post.rb.bytes 已接收字节
jmeter.get/post.a.min

sampler响应的最短响应时间

(ok.count和ko.count的最小值)

jmeter.get/post.a.max

sampler响应的最长响应时间

(ok.count和ko.count的最大值)

jmeter.get/post.a.avg

sampler响应的平均响应时间

(ok.count和ko.count的平均值)

jmeter.get/post.a.pct<percentileValue>

sampler响应的百分比

(根据成功和失败的总数来计算)

配置Grafana

首先进入Grafana的首页,可以看到官方画了个流程:先创建数据源,再创建数据面板

创建数据源

一共有两个入口哈,可以在首页直接点击  Create your first data source ,也可以看第二张图按步骤进入创建页面

然后,选择InfluxDB作为我们的数据源

到此为止,数据源就配置成功啦!!

配置数据看板

Grafana&InfluxDB集成,展示测试结果数据

panel基础使用

按上面的步骤创建好DashBoard后,再通过panel展示具体数据,先介绍下panel的入口

一般选 Add Query 先,当然选 Choose Visualization 也可以,进去后可以相互切换的

Convert to row 就是生成一行,可以将展示差不多一致类型数据的panel放到里面,统一管理,收起or展开;

如下图,我将描述线程数和响应数的panel放在同一个Row了

数据绑定

查看总线程数、成功响应数、失败响应数

可以先点Add Query,进入到下面的界面

若想看成功响应数和失败响应数,只需要切换表名即可;

可以发现跟我一开始只展示数字不太一样,因为图表类型还没设置;当我们只想看数据而不想看数据趋势图的话,可以改变它的类型;

在同一个界面,点击左侧列表选中第二个icon,然后选择Singlestat即可

查看所有请求、get请求、post请求的TPS

如果想在同一个panel里展示多个指标数据的话,可以通过在Panel里Add Query

基本的数据绑定已经教会大家啦,自己想要展示什么数据直接改变表名就行了

顺带附上官方提供的一个数据看板图,大家也可以照搬照抄用它的panel,手动添加每个指标

至此,初级版的Grafana+Jmeter+Influxdb 性能实时监控平台初步搭好啦!

当然博主是不建议Jmeter使用 GraphiteBackendListenerClient 来采集数据的,因为请求多起来的时候会有非常多的表,维护成本也会增加;后面将会介绍如何通过 InfluxDBBackendListenerClient  来采集数据

配置Backend Listener之InfluxDBBackendListenerClient

配置项含义

首先来看看每个配置项的含义

  1. influxdbUrl:安装influxdb的路径;主要格式:http://主机地址:8086/write?db=数据库名
  2. application:应用名称;在 events 表中对应的字段是 application
  3. measurement:表名;数据存储到哪个表,默认是jmeter,不用改即可
  4. summaryOnly:同GraphiteBackendListenerClient
  5. samplersRegex:同GraphiteBackendListenerClient
  6. percentiles:同GraphiteBackendListenerClient
  7. testTitle:测试名称;在 events 表中对应的字段是 text ,JMeter在测试的开始和结束时自动生成注释,该注释的值以'start'和'end'结尾
  8. eventTags:Grafana允许为每个注释显示标签;在 events 表中对应的字段是 tags

不懂application和testTitle的小伙伴可以看看下面的图,可以看到同一个testTitle的两条记录的时间差就是执行测试计划的总时长

建议:只需修改application和testTitle即可,可以相同也可以不相同,其他配置跟着图片走就好了;当然安装路径还是要改的哈

查看InfluxDB

使用InfluxDBBackendListenerClient好处就是,再多的请求也只会生成两张表:

events :主要拿存事件的

jmeter :存测试结果数据的,Grafana也是从这个表获取数据再展示

再次Grafana&InfluxDB集成,展示测试结果数据

这次就不再需要自己去创建DashBoard和Panel了,因为在官方模板库,已经有一个非常完美的模板了,当然前提是你要用 InfluxDBBackendListenerClient 采集数据才能有效的哈

首先,进入官方模板库: https://grafana.com/dashboards ,然后跟着图片导入模板并初始化即可

 

只要你的数据源,表名配的没有错,Jmeter再执行一下测试计划,DashBoard中筛选下时间,就可以成功看到数据啦!

模板自带了三个下拉筛选框

data_source:数据源,在Grafana配置了多少个就显示多少个

application:在Jmeter配置好的application,如果每次测试计划执行时的application都不一样,你就可以通过这个筛选出对应测试时机的结果数据了

transaction:在Jmeter配置好的sampleList,譬如我只发了get、post请求,这里就只会给你选get、post;可以滑到页面下面看到针对某个请求的数据展示

Centos8.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台的更多相关文章

  1. Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台(不使用docker)

    工具介绍 [centos7安装influxDB] Influxdata官网下载路径:https://portal.influxdata.com/downloads/ 1.直接执行以下命令安装 2.安装 ...

  2. 全网最详细!Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    背景 日常工作中,经常会用到Jmeter去压测,毕竟LR还要钱(@¥&*...),而最常用的接口压力测试,我们都是通过聚合报告去查看压测结果的,然鹅聚合报告的真的是丑到家了,作为程序猿这当然不 ...

  3. Centos7 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    未完,待更新 背景 日常工作中,经常会用到Jmeter去压测,毕竟LR还要钱(@¥&*...),而最常用的接口压力测试,我们都是通过聚合报告去查看压测结果的,然鹅聚合报告的真的是丑到家了,作为 ...

  4. window平台基于influxdb + grafana + jmeter 搭建性能测试实时监控平台

    一.influxdb 安装与配置 1.1 influxdb下载并安装 官网无需翻墙,但是下载跳出的界面需要翻墙,我这里提供下载链接:https://dl.influxdata.com/influxdb ...

  5. 用Red5搭建支持WEB播放的实时监控视频

    用Red5搭建支持WEB播放的实时监控视频 1. 下载Red5:https://github.com/Red5/red5-server/releases 下载了Red5 1.0.6 release的Z ...

  6. 搭建jmeter+influxdb+grafana压测实时监控平台(超详细,小白适用)

    1.前言 在使用jmeter做性能测试的时候,监控系统性能的时候,无论是使用插件还是报告生成,都没法实现实时监控.使用JMeter+Influxdb+Grafana可以实现实时监控. 本次环境搭建各软 ...

  7. Jmeter监控平台搭建:JMeter+InfluxDB+Grafana

    背景 平时一般用Jmeter的Gui模式,添加对应的插件,查看每秒线程数.TPS.响应时间等曲线,其实高并发是不建议这么看的. 解决方案 可以搭配InfluxDB+Grafana工具,使Jmeter异 ...

  8. 搭建grafana+telegraf+influxdb服务器性能监控平台

    最近在学习性能测试,了解到一套系统资源使用率低的监控环境,也就是grafana+telegraf+influxdb. InfluxDB是一款优秀的时间序列数据库,适合存储设备性能.日志.物联网传感器等 ...

  9. SpringBoot 2.0 + InfluxDB+ Sentinel 实时监控数据存储

    前言 阿里巴巴提供的控制台只是用于演示 Sentinel 的基本能力和工作流程,并没有依赖生产环境中所必需的组件,比如持久化的后端数据库.可靠的配置中心等.目前 Sentinel 采用内存态的方式存储 ...

随机推荐

  1. python脚本监控股票价格钉钉推送

    关注股市,发家致富 问题:一天天盯着股市多累,尤其上班,还不能暴露,股票软件,红红绿绿,这么明显的列表页面,一看就知道在摸鱼.被领导发现饭碗就没了 解决:搞个脚本监听一下自己关注的股票,一到价格就发个 ...

  2. netty系列之:在netty中使用protobuf协议

    目录 简介 定义protobuf 定义handler 设置ChannelPipeline 构建client和server端并运行 总结 简介 netty中有很多适配不同协议的编码工具,对于流行的goo ...

  3. Java角度制向弧度制转化

    1.第一次写博客啊写博客啊写啊写0.0..0. 2.输入正多边形的边长·边数·求正多边形的面积 3.超级简单,可是在转弧度制那里有点懵,刚开始学Java,所以难免走弯路 4.代码如下: 1 publi ...

  4. 通俗易懂理解——dijkstra算法求最短路径

    迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径.它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止 ###基本思想 通过Dij ...

  5. C#:[StructLayout(LayoutKind.Sequential)]

    参考网址: https://blog.csdn.net/hongkonglife/article/details/23422857 结构体是由若干成员组成的.布局有两种1.Sequential,顺序布 ...

  6. AAC简介

    AAC共有9种规格,以适应不同的场合的需要: MPEG-2 AAC LC 低复杂度规格(Low Complexity)--比较简单,没有增益控制,但提高了编码效率,在中等码率的编码效率以及音质方面,都 ...

  7. 转:NGINX中的proxy_pass和rewrite

    章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6807081.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点,如有 ...

  8. Linux操作系统基本应用(完结)

      时间:2015-4-10 12:40Linux第一天 Linux基本命令  Linux各文件夹的作用    bin  二进制可执行命令    dev  设备特殊文件    etc  系统管理和配置 ...

  9. Go: 复合数据类型struct

    结构体 结构体是将零个或多个任意类型的命名变量组合在一起的聚合数据类型.每个变量都叫做结构体的成员. type Employee struct { ID int Name string age int ...

  10. 《redis 5设计与源码分析》:第二章 简单动态字符串

    介绍 简单动态字符串(Simple Dynamic Strings, SDS)是Redis的基本数据结构之一,用于存储字符串和整型数据.它的特点是:方便扩容.二进制安全. 二进制安全 在C语言中,用& ...