前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Grafana + InfluxDB 实现 Jmeter 压测的图形化监控

Grafana + InfluxDB 实现 Jmeter 压测的图形化监控

原创
作者头像
鲍远林
修改于 2020-10-27 02:19:14
修改于 2020-10-27 02:19:14
4.7K0
举报
文章被收录于专栏:泛互云原生泛互云原生

本方案采用 Grafana + InfluxDB 实时展示 Jmeter 的压测数据,下面为本文实验的压测指标数据流向图。

本文研究了 Jmeter 提供的两种方式向 InfluxDB 写数据方式,具体在文中第二节重点描述其使用和配置:

  • 使用 Graphite 协议
  • 使用 HTTP 协议

Jmeter 提供的方式需要自己配置 Grafana Dashboard,不是很方便,本文第四节:JMeter-InfluxDB-Writer-plugin & Jmeter Load Test Dashboard介绍了 NovaTec-APM 提供的 JMeter 插件以及配套的 Grafana Dashboard,可以节省大量配置工作,推荐大家使用这种方式

此外,本文中使用的环境配置如下:

  • 腾讯云 CVM CentOS 7.7
  • InfluxDB 1.8
  • Jmeter 5.3
  • Grafana 7.1.3

1. InfluxDB 安装配置


1.1 安装 InfluxDB

CentOS 系统可使用以下命令下载安装 InfluxDB:

代码语言:txt
AI代码解释
复制
wget http://dl.influxdata.com/influxdb/releases/influxdb-1.8.1.x86_64.rpm
sudo yum localinstall influxdb-1.8.1_64.rpm

1.2 Graphite 配置

编辑 influxdb 配置文件/etc/influxdb/influxdb.conf, 使用 graphite 协议上报数据到 InfluxDB,需要将 graphite 下面的注释去掉,设置enable=true启用 graphite。

1.3 HTTP 配置

检查配置文件/etc/influxdb/influxdb.confhttp 下面的配置是否打开并 enable,Grafana 通过 http 从 influxdb 拉取数据,默认是打开的。

1.4 启动 InfluxDB

保存配置后用下面的命令启动 influxdb,并查看运行状态。

代码语言:txt
AI代码解释
复制
sudo service influxdb start
service influxdb status

也可使用下面的 curl 命令验证 InfluxDB 是否能正常访问:

代码语言:txt
AI代码解释
复制
curl -i influxdb-ip:8086/ping

正常情况下,会得到下图输出的信息:

接着登录 influxdb 创建数据库和用户

代码语言:txt
AI代码解释
复制
// 登录 influxdb
influx -precision rfc3339  //直接 influx 也可以

CREATE DATABASE perftest  // 创建数据库,和上面配置文件中的数据库名对应
use perftest 

// 创建用户并制定密码,这里的用户名和密码,在配置 Grafana 时会用到
create user "admin" with password '123456' with all privileges 

使用 InfluxDB 的 HTTP API 可以更简单的创建数据库,比如下面就创建了一个名为 loadtest 的库:

代码语言:txt
AI代码解释
复制
curl -i -XPOST http://influxdb-ip:8086/query --data-urlencode "q=CREATE DATABASE loadtest"

2. 配置 Jmeter Backend Listener


Jmeter 支持 GraphiteHTTP 两种协议向 InfluxDB 上报压测指标数据。

2.1 使用 Graphite 协议上报 metric

2.1.1 添加后端监听器:Test Plan > Add > Listener > Backend Listener

2.1.2 选择 org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient

  • Backend Listener implementation - Jmeter 压测指标监听器的实现类,按使用的数据上报协议进行选择。本文使用 graphite 协议上报压测指标数据,因而选择 GraphiteBackendListenerClient
  • Async Queue size - 指标处理一般队列大小,除非遇到性能问题,否则保持默认 5000 不变。

2.1.3 配置后端监听器

  • graphiteMetricsSender - metric sender 的实现类,保持默认即可。
  • graphiteHost - InfluxDB 所在的主机 IP。
  • graphitePort - InfluxDB 配置文件的 graphite 中指定的端口号。
  • rootMetricsPrefix - 对应 InfluxDB 的 measurement 前缀。
  • summaryOnly - true 只保留汇总数据结果,不会存储详细的压测 metrics 数据。
  • samplersList - 保留 blank 或填 .* 表示上报所有 sampler 压测 metric。若按需上报,此处指定 sampler 的名称正则表达式。
  • useRegexpForSamplersList - true 表示使用 samplersList 指定的正则表达式,过滤 sampler 上报。
  • percentiles - 指定上报的 百分位 数据。

2.2 使用 HTTP 协议上报 metric

使用 HTTP 协议时,选择监听器org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient

  • influxdbMetricsSender - metric sender 的实现类,当前只有 HttpMetricsSender 一个实现类,保留默认即可。
  • influxdbUrl - InfluxDB 的 url,格式: http://[influxdb_host]:[influxdb_port]/write?db=[database_name]
  • application - 在多个应用压测数据共享一个 DB 时,可指定应用名,以便区分。
  • measurement - 存储 metric 的 measurement 名称,默认为 jmeter。
  • summaryOnly - true 只保留汇总数据结果,不会存储详细的压测 metrics 数据。
  • samplersRegexp - 保留 blank 或填 .* 表示上报所有 sampler 压测 metric。若按需上报,此处指定 sampler 的名称正则表达式。
  • percentiles - 指定上报的 百分位 数据。
  • eventTags - 可指定 tag,如制定则存储在 events measurement 中。

运行 Jmeter 后可使用 InlfuxDB 的 API 验证数据上报是否正常:

代码语言:txt
AI代码解释
复制
curl 'http://influxdb-ip:8086/query?pretty=true' --data-urlencode "db=loadtest" --data-urlencode "q=SHOW SERIES"

出现下图的输出,表示 metric 数据收集正常:

3. Grafana 安装配置


3.1 安装 Grafana

CentOS 中可使用下面的命令下载和安装 grafana:

代码语言:txt
AI代码解释
复制
wget https://dl.grafana.com/oss/release/grafana-7.1.3-1.x86_64.rpm
sudo yum install grafana-7.1.3-1.x86_64.rpm

也可去官网下载 Grafana 下载:https://grafana.com/grafana/download?platform=linux

安装完成后,使用以下命令启动 Grafana:

代码语言:txt
AI代码解释
复制
systemctl start grafana-server

接着打开浏览器,使用 http://<IP 地址>:3000 即可访问 grafana。如果无法访问,请检查下安全组是否开放了3000端口。

3.2 添加 InfluxDB Data Source

Grafana初始用户名密码都是 admin, 登入之前提示先改初始密码,可按需修改。进入 Grafana 后按下图配置 influxdb Data Source。

3.3 配置监控大盘

按下图中的步骤添加 dashboard。

重复上面 panel 的创建步骤,添加自己感兴趣的监控图表。

Jmeter 官网上给出了每个指标的含义,具体见:https://jmeter.apache.org/usermanual/realtime-results.html

4. JMeter-InfluxDB-Writer-plugin & Jmeter Load Test Dashboard


直接使用 NovaTec-APM 提供了 JMeter-InfluxDB-Writer-plugin 以及配套的 Grafana Dashboard Jmeter Load Test 可省去配置 grafana dashboard 的麻烦。

4.1 配置 JMeter-InfluxDB-Writer-plugin

  • 下载 JMeter-InfluxDB-Writer-plugin
  • 将下载的 JMeter-InfluxDB-Writer-plugin-1.2.jar(这里选择了 1.2 版)放入 Jemter 的插件目录 JMETER_HOME/lib/ext
  • 重启 Jmeter
  • 按下图所示配置 Backend Listener,选择rocks.nt.apm.jmeter.JMeterInfluxDBBackendListenerClient,填上 InfluxDB 信息后运行启动压测,Jmeter 的日志窗口可以看到插件正常工作。

4.2 导入并使用 Jmeter Load Test 看板

在 Grafana 的 Dashboards Manage 页面,输入Jmeter Load Test 的 Dashboard ID 1152 后,点击 Import 按钮即可导入。

启动 Jmeter 压测后,即可在 Jmeter Load Test Dashboard 看到压测数据,如下图:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
js 图片转换base64 base64转换为file对象
相关: https://www.cnblogs.com/fps2tao/p/9268380.html
全栈程序员站长
2022/07/21
9.7K1
# 前端图片压缩方案
先通过 js 中 img 构造函数,实例化 img 对象,后将图片的路径给转移到中,再建立一个 canvas 画布,后对画布进行各方面的数值的设置。
九旬
2023/10/19
2740
图片转换js (img对象,file对象,base64,canvas对象),以及图片压缩方式(转载)
首先想一想我们有哪些需求?大多时候我们需要将一个File对象压缩之后再变为File对象传入到远程图片服务器;有时候我们也需要将一个base64字符串压缩之后再变为base64字符串传入到远程数据库;有时候后它还有可能是一块canvas画布,或者是一个Image对象,或者直接就是一个图片的url地址,我们需要将它们压缩上传到远程;
李维亮
2021/07/08
4.9K0
ajax+php上传图片,等比压缩,canvas压缩减少上传带宽,优化上传速度
至此后端已经压缩完毕,但是如果上传的图片大多是几M的大图,难免浪费上传带宽,而且会导致速度非常慢,影响用户体验,于是可以使用canvas在上传之前压缩一遍,解决速度慢的问题。
躺平程序员老修
2023/09/05
4110
面试官昨天问我对base64的理解,着实被问懵了
我们知道一个字节可表示的范围是 0 ~ 255(十六进制:0x00 ~ 0xFF), 其中 ASCII 值的范围为 0 ~ 127(十六进制:0x00 ~ 0x7F);而超过 ASCII 范围的 128~255(十六进制:0x80 ~ 0xFF)之间的值是不可见字符。
用户3806669
2021/03/25
4.7K0
面试官昨天问我对base64的理解,着实被问懵了
【JS】936- File、Blob、dataURL 和 canvas 的应用与转换
(1) 通常情况下, File 对象是来自用户在一个 input 元素上选择文件后返回的 FileList 对象,也可以是来自由拖放操作生成的 DataTransfer 对象,或者来自 HTMLCanvasElement 上的 mozGetAsFile() API。
pingan8787
2021/04/26
2.5K0
【JS】936- File、Blob、dataURL 和 canvas 的应用与转换
vue前端怎么导出图片_VUE中将页面导出为图片或者PDF
1.将页面html转换成图片 npm install html2canvas –save
全栈程序员站长
2022/09/01
2.7K0
Typecho增加评论图片
代码 // 评论图片 $CommentImg = new Typecho_Widget_Helper_Form_Element_Select(
小东东
2023/03/20
1K0
Typecho增加评论图片
手把手教你实现一个图片压缩工具(Vue与Node的完美配合)
图片压缩对于我们日常生活来讲,是非常实用的一项功能。有时我们会在在线图片压缩网站上进行压缩,有时会在电脑下软件进行压缩。那么我们能不能用前端的知识来自己实现一个图片压缩工具呢?答案是有的。
Vam的金豆之路
2021/12/01
8170
手把手教你实现一个图片压缩工具(Vue与Node的完美配合)
开发实例:后端Java和前端vue实现图片管理功能
2. 通过input[type=file]元素上传图片,使用element-ui的Upload组件进行封装。
用户1289394
2024/01/19
7150
开发实例:后端Java和前端vue实现图片管理功能
当前端遇见了强制横屏签字的需求...
在前一阶段的工作中,突然接到了这个需求:_手写签批的页面在移动端竖屏时强制页面横屏展示进行签字_,一开始我觉着只要将页面使用 CSS3 的 transform 进行 rotate 一下就可以了,但是当我尝试后发现并不是像我想象的那样简单。
winty
2023/12/11
6110
当前端遇见了强制横屏签字的需求...
base64与二进制互转,保存内容,文件读写:Blob/FileReader/URL/FormData
html5开发常用的对象有:FileReader  FormData File URL  Blob createObjectURL Uint8Array等,这些在日常开发中,需要做图片转base64,base64转而二进制文件,页面截图让用户下载。
周陆军博客
2023/05/07
3K0
JS 将 base64编码的图片转化为图片文件【未测试】
需求:将string 类型的base64编码图片转化成File类型的图片文件,用于文件上传
双面人
2019/07/12
5.4K0
vue.js + axios.js图片压缩处理并上传到服务器demo
点击查看效果 图片压缩原理 将图片重新画入一个canvas中。可设置最大宽度,再按图片宽高比例定义canvas画布的宽高。 完整代码demo <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>上传图片</title> <meta name="renderer" content="webkit"> <meta name="viewport" content="widt
别盯着我的名字看
2022/06/09
5.7K0
js项目中常用的一些工具函数
记录一下在项目中常用的工具函数,随时更新 var utils = { /** * 获取路径参数方法 返回参数值 * @name 参数名字 * */ getQueryString: function (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); // window.location.search 获取url问号后面部分 v
别盯着我的名字看
2022/06/09
5930
js 图片与base64互相转换
参考地址:http://www.cnblogs.com/mr-wuxiansheng/p/6931077.html
lin_zone
2018/08/15
5.9K0
如何用 JavaScript 制作一个好用又好玩的图片压缩工具
现在的设备发达了,图片拍下来动辄 5MB 10MB,单反相机歘欻欻一张经能达到 40MB,手机的内部储存也跟着很大,随便一个手机都 100G 。
独元殇
2023/03/21
9890
如何用 JavaScript 制作一个好用又好玩的图片压缩工具
cropperjs图片裁剪及数据提交文件流互相转换详解
cropperjs的主要功能是图片裁剪,是一款前端常用的的图片裁剪工具,可根据相关api配置裁剪出符合自己业务需要的图片,具体使用如下:
超级小可爱
2023/12/21
5030
详解 JS 压缩图片
作者 | wuwhs https://segmentfault.com/a/1190000023486410
五月君
2020/09/17
13.4K0
js实现图片资源转化成base64的各种场景
网络上有很多片介绍通过js将图片转换成base64的文章,之所以再写这篇文章的原因时发现没有找到系统的介绍的文章,有的介绍如何实现本地项目的图片转码,有的介绍如何实现网络资源的图片转化,但是系统介绍的少之又少,所以我就在这里将各种场景系统的介绍一下:
yaphetsfang
2020/07/30
2K0
推荐阅读
相关推荐
js 图片转换base64 base64转换为file对象
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档