前言

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

工具介绍

工具

介绍

Jmeter

压测工具

InfluxDB

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

Grafana

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

Centos8安装InfluxDB

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

安装InfluxDB

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

修改配置文件

vim /etc/influxdb/influxdb.conf

【http】模块

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

enabled = true bind-address = ":8086"

【graphite】模块

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

启动InfluxDB

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

创建InfluxDB的jmeter数据库

进入influxdb数据库命令行:influx -precision rfc3339
查看当前有哪些数据库:show databases
创建【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防火墙相关参数
开放3000端口:firewall-cmd --zone=public --add-port=3000/tcp --permanent
更新进出站规则:firewall-cmd --reload
  • 访问Grafana,当前Linux系统IP地址(ifconfig)加3000端口号
  • 用户名密码均是admin

Jmeter压测工具

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

后端监听器配置

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

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

influx -precision rfc3339
show databases
use jmeter
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. Spring源码解析之ConfigurationClassPostProcessor(一)

    ConfigurationClassPostProcessor 在前面一个章节,笔者和大家介绍了在构造一个应用上下文时,spring会执行到PostProcessorRegistrationDeleg ...

  2. git根据项目地址使用不同代理服务器

    问题 由于公司访问GitHub只能走代理,但是内网gitlab服务器又不能走代理. 因此想找到一种方案,可以支持git自动根据项目地址使用不同代理. 方案 如下所示,可以指定GitHub地址使用指定的 ...

  3. 微信小程序开发——后端Java(一)

    一.前言 最近接触了小程序的开发,后端选择Java,因为小程序的代码运行在腾讯的服务器上,而我们自己编写的Java代码运行在我们自己部署的服务器上,所以一开始不是很明白小程序如何与后台进行通信的,然后 ...

  4. Layui-自定义函数及调用

    控件 表格 时间范围 页面展示 场景 页面中选择开始时间和结束时间表格变化 使用 html代码 <div> <form class="layui-form" ac ...

  5. 内存吞金兽(Elasticsearch)的那些事儿 -- 认识一下

    背景及常见术语 背景 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上. Lucene 可以说是当下最先进.高性能.全功能的搜索引擎库- ...

  6. 解析和遍历一个HTML文档

    如何解析一个HTML文档: String html = "<html><head><title>First parse</title>< ...

  7. 关于Mybatis中表中字段名和POJO中字段名不同的解决方法

    项目结构: POJO中: package com.domain; /** * @author mzy * 定义orders表对应的实体类 */ public class Order { /** * C ...

  8. LVS本地实验环境搭建

    文中实验需要使用以下软件: CentOS的镜像 Virtual Box GNS3 0.实验前的准备工作 0.1.修改yum源 为了方便安装软件,我们设置yum源为公司yum源 1.直接复制公司机器上的 ...

  9. 硬核! Github上 ,star超高的Java 开源项目分享给你!

    Awsome JavaGreat Java project on Github(Github 上非常棒的 Java 开源项目). English Version 大家都知道 Github 是一个程序员 ...

  10. 详解 Apache SkyWalking 跨进程传播协议

    简介 SkyWalking 跨进程传播协议是用于上下文的传播,本文介绍的版本是3.0,也被称为为sw8协议. Header项 Header应该是上下文传播的最低要求. Header名称:sw8. He ...