JMeter + Grafana +InfluxDB性能监控 (二)

news2025/1/8 4:19:23

       您可以通过JMeter、Grafana 和 InfluxDB来搭建一个炫酷的基于JMeter测试数据的性能测试监控平台。

       下面,笔者详细介绍具体的搭建过程。

  1. 安装并配置InfluxDB

您可以从清华大学开源软件镜像站等获得InfluxDB的RPM包,这里笔者下载的是influxdb-1.8.0.x86_64.rpm包文件,大家可以依据自己机器情况选择适合的版本,将其上传到虚拟机的/usr/local目录下,如图10-4所示。

图10-4

       应用rpm -ivh influxdb-1.8.0.x86_64.rpm命令安装InfluxDB,如图10-5所示。

图10-5

       应用vi /etc/influxdb/influxdb.conf命令修改InfluxDB配置文件,这里主要打开并修改图10-6所示的enabled、database和bind-address配置项的值。

图10-6

       下面简单对这几个配置项做下介绍:

enabled = true  # 是否启用该模块,默认值 false

database = "jmeter"  # 数据库名称,默认值:"graphite"

bind-address = ":2008"  # 绑定端口,默认值:":2003"

protocol = "tcp"  # 协议,默认值:"tcp"

consistency-level = "one"  # 一致性级别,默认值:"one"

       修改完成后,保存该配置文件。

       启动并登录到InfluxDB客户端,创建一个名称为jmeter的数据库,如图10-7所示。

图10-7

       启动InfluxDB对应的命令为systemctl start influxdb。

       登录InfluxDB客户端的命令为influx -host 127.0.0.1 -port 8086,127.0.0.1为本机,InfluxDB默认使用的是8086端口。注,该端口不是influxdb.conf配置文件的2008,2008为JMeter往InfluxDB数据库写数据的端口。创建好jmeter数据库后,就可以输入exit退出InfluxDB客户端了。

  1. 安装并配置Grafana

您可以从清华大学开源软件镜像站等获得Grafana的RPM包,这里笔者下载的是grafana-7.1.5-1.x86_64.rpm包文件,大家可以依据自己机器情况选择适合的版本,将其上传到虚拟机的/usr/local目录下,如图10-4所示。

应用rpm -ivh grafana-7.1.5-1.x86_64.rpm命令安装Grafana,如图10-8所示。

图10-8

       依次执行systemctl daemon-reload、systemctl enable grafana-server.service和systemctl start grafana-server.service这3条命令,如图10-9所示。

图10-9

       打开浏览器,输入URL地址为http://localhost:3000,如图10-10所示。默认用户名和密码都是admin。

图10-10

       输入用户名和密码后,单击Login按钮,将让您设置新的密码,如图10-11所示。

图10-11

       单击Sumbit按钮,则进入到Grafana主页面,如图10-12所示。

图10-12

       如图10-12所示,单击Add data source按钮为Grafana添加一个要展示的数据源,在弹出的图10-13所示对话框,选择InfluxDB数据类型。

图10-13

       在设置页面,主要配置2项内容,即:URL和Database,URL输入InfluxDB服务器所在地址和端口,因为笔者将InfluxDB和Grafana均部署在这台CentOS虚拟机上了,所以URL地址填写为http://localhost:8086,Database则填写刚才我们在InfluxDB中建的数据库名称,即:jmeter,如图10-14所示。

图10-14

       单击Save &Test 按钮保存并测试配置是否成功,若出现绿色的“Data source is working”则表示成功连接到指定的数据源,如图10-15所示。

图10-15

Grafana官网提供了丰富的Dashboard模版可供我们选择,这里笔者搜索jmeter相关的Dashboard模版,可以看到出现了很多内容,这里我们查看目前下载最多的也就是第一项,如图10-16所示。

图10-16

           查看该Dashboard模版可以看到其对应的ID为5496,如图10-17所示。

图10-17

       接下来,您就可以进入到Grafana,导入该Dashboard模版。如图10-18所示,依次单击对应的菜单项或按钮。

图10-18

       当出现图10-19所示页面时,输入Dashboard模版对应的ID,即:5496,单击Load按钮。

图10-19

       则自动加载导入Dashboard的信息,您可以依据自身的实际情况配置,这里笔者金修改DB name选项为InfluxDB即可,如果前期您创建的数据库名称不是jmeter,则在Measurement name要设置为对应的数据库名称,如图10-20所示。

图10-20

       如图10-20所示,单击Import按钮后,将显示图10-21所示界面信息。您将会看到非常丰富的JMeter结果图表信息,当然因为现在我们并没有执行JMeter脚本,自然不会产生相应的执行结果,也就不会有数据写入到InfluxDB的jmeter数据库,所以Grafana展现数据为空。

图10-21

  1. 配置JMeter

这里笔者创建了一个访问搜搜首页(www.soso.com)的脚本,如图10-22所示。

图10-22

       为了能够让Grafana展现炫酷的压测结果相关性能指标数据,需要添加一个Backend Listener元件,如图10-23所示。

图10-23

       在弹出的Backend Listener对话框中,您需要配置Backend Listener implementation,选择org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient选项,切记不要选错。在influxdbUrl中输入InfluxDB所在服务器地址,这里我们输入虚拟机所在的地址(192.168.176.129),完整influxdbUrl信息为http://192.168.176.129:8086/write?db=jmeter

同样提醒您的是数据库的名字千万不要写错了,应填写您实际创建的数据库名称。

measurement保留默认值jmeter,参见图10-24所示。压测过程中JMeter将向InfluxDB回写压测结果数据,其会自动创建一些measurement(类似于mysql数据库的表),从图10-25大家不难发现events、jmeter等就是它自动创建的measurement,而此处的jmeter并非创建的数据库jmeter,只是同名而已,大家必须要清楚这点。

为了区分不同的应用在application处,笔者填写的是192.168.176.129_soso,它将作为Grafana过滤数据的一个条件,参见图10-28。

图10-24

图10-25

       为了能让大家看到压测结果的一些图表信息,笔者设置100秒内加载10个用户且每个用户执行10次,也就是在100秒内执行100次访问搜搜首页的测试场景,如图10-26所示。

图10-26

       待该测试计划场景执行完成后,访问Grafana,单击最近查看的面板下方的Apache JMeter Dashboard using Core InfluxdbBackendListenerClient链接,如图10-27所示。

图10-27

       在展现的JMeter面板中,可以看到出现了带数据的漂亮图表,清楚的看到本次执行压测共发送了100个请求,没有失败的请求等,如图10-28所示。当数据量大时,可以通过先前在JMeter配置时设置的application值来进行结果数据的过滤。

图10-28

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2272393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

李宏毅机器学习笔记-Transformer

目录 1. Seq2seq 2. encoder Transformer 中的 Block 结构 3. Decoder 4.Encoder和Decoder间的信息传递 5.Training 6.Tips 1. Seq2seq Transformer 是一个seq2seq的model。Seq2seq指的是input是一个序列,输出也是一个序列,输出的长度是由机器自己…

【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理

使用AWS SDK碰到的错误,其实很简单,要装个扩展库 保持如下 Fatal error: Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests sigv4a auth schemes, but the client currently supports sigv4, none, bearer, sigv4-…

Qt 5.14.2 学习记录 —— 일 新项目

文章目录 1、创建2、查看代码 ---- main.cpp3、查看代码 ---- widgt.h4、查看代码 ---- widgt.cpp和widget.ui5、查看代码 ---- Empty.pro6、运行产生的中间文件 1、创建 左上角的文件,新建文件或项目。如果要写一个GUI程序,应当选择Application&#x…

Spring MVC和servlet

1.Spring MVC是Spring框架的一个扩展 2.Spring MVC工作流程 1、用户发送请求至前端控制器DispatcherServlet。 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及…

蓝牙架构介绍

架构1:hostcontroller双芯片标准架构 这个标准把蓝牙协议栈分成host和controller两部分,其中host跑在AP上,controller跑在蓝牙模块上,两者之间通过HCI协议进行通信,AP芯片厂商一般会直接采用开源的Bluez来实现Host功能…

MySQL(二)MySQL DDL数据库定义语言

1. MySQL DDL数据库定义语言 1.1. MySQL定义语言 进入MySQL mysql -u root -p(回车后输入密码,即可进入mysq1)1.1.1. 数据库操作 (1)查看数据库 mysql>show databases;注:MySQL语句分隔符为“;”   mysql库很重要它里面有…

决定系数(R²分数)——评估回归模型性能的一个指标

目录 1.定义 2.计算举例 3. 结果分析 1.定义 R(R平方)分数,也称为决定系数,是用来评估回归模型性能的一个指标。它表示自变量解释因变量变异性的比例。R分数的取值范围通常在0到1之间,其值越接近1,说明…

node.js内置模块之---stream 模块

stream 模块的作用 在 Node.js 中,stream 模块是一个用于处理流(stream)的核心模块。流是一种处理数据的抽象方式,允许程序处理大量数据时不会一次性将所有数据加载到内存中,从而提高性能和内存效率。通过流&#xff0…

音视频入门基础:MPEG2-PS专题(5)——FFmpeg源码中,解析PS流中的PES流的实现

一、引言 从《音视频入门基础:MPEG2-PS专题(3)——MPEG2-PS格式简介》中可以知道,PS流由一个个pack(包装)组成。一个pack 一个pack_header 一个或多个PES_packet。pack_header中还可能存在system header…

ElasticSearch05-集群搭建

零、文章目录 ElasticSearch05-集群搭建 1、Windows集群 (1)安装节点 就是把下载的压缩包解压之后复制三个副本 (2)配置节点 每个文件夹的配置文件config/elasticsearch.yml修改如下node-01 配置如下 cluster.name: myclust…

【服务器项目部署】✈️将本地项目部署到服务器(二)!

目录 👋前言 👀一、功能调整 🌱二、服务部署 💞️三、代码调整 🍻四、章末 👋前言 小伙伴们大家好,上篇文章本地实践了如何将本地项目部署到服务器上,从服务器的选择、服务器环境…

挖掘建模之分类与预测

根据挖掘目标和数据形式可以建立分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等模型,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。 1.分类与预测 就餐饮企业而言,经常会碰到这样的问题: 1&…

安卓入门十三 常用功能模块一RxJava

响应式编程RxJava 响应式编程:使用RxJava库实现响应式编程范式,提供更简洁、易于维护的异步编程方式。 异步编程的简洁性:响应式编程提供了一种简洁、流畅的方式来处理异步任务。通过使用操作符和线程调度器,可以将异步操作串联…

【LeetCode】:最长乘积等价子数组【简单】

https://leetcode.cn/problems/maximum-subarray-with-equal-products/description/ 以下是解决这道题的详细思路: 一、理解题目要求 题目给定一个由正整数组成的数组 nums,需要找出其中最长的“乘积等价子数组”的长度。一个数组 arr 被称为“乘积等…

Android使用DataBinding和Merge引发的血案

Android使用DataBinding和Merge引发的血案 1.前言: 相信Databinding和Merge大家都不陌生,今天讲解的是Databinding和Merge一起使用遇到的问题,在父布局使用,引用的布局使用Merge会导致id找不到,运行时直接崩溃了&…

JS (node) 的 ACM 模式 + debug方法 (01背包为例)

文章目录 JS 的 ACM 模式输入处理 JS dubug (01背包为例)动态输入在本地通过 Node.js 运行和调试 硬编码 Hard CodingVS Code JS 的 ACM 模式 在 JavaScript 中,ACM 模式一般通过 Node.js 的 readline 模块实现。 输入处理 使用 readline 模块监听输入。 将每行输…

【MySQL 保姆级教学】用户管理和数据库权限(16)

数据库账户管理是指对数据库用户进行创建、修改和删除等操作,以控制用户对数据库的访问权限。通过账户管理,可以设置用户名、密码、主机地址等信息,确保数据库的安全性和可控性。例如,使用 CREATE USER 创建用户,ALTER…

HTML——56.表单发送

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>表单发送</title></head><body><!--注意&#xff1a;1.表单接收程序&#xff0c;放在服务器环境中(也就是这里的www文件目录中)2.表单发送地址&#x…

el-table行列转换简单版,仅限单行数据

原始数据格式如下&#xff0c;如果不是此格式&#xff0c;请转换成以下格式在进行以下操作 [{ label: name, value: Tom },{ label: age, value: 25 },{ label: country, value: UK } ]代码如下 <template><el-table :data"tableData" style"width: …

OpenGL材质系统和贴图纹理

上一篇文章当中笔者为大家介绍了风氏光照模型&#xff0c;相信大家也发现了光照着色器当中有设置有很多控制光照强度的参数&#xff0c;而所谓的材质系统就是我们可以人为的去调节这些参数&#xff0c;让一个物体的反光效果能够更加接近我们现实生活当中的一些物体。 材质系统…