前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >性能实时监控平台Jmeter+InfluxDB+Grafana

性能实时监控平台Jmeter+InfluxDB+Grafana

作者头像
wangmcn
发布2022-07-26 14:55:43
1.3K0
发布2022-07-26 14:55:43
举报
文章被收录于专栏:AllTests软件测试

性能实时监控平台

Jmeter+InfluxDB+Grafana

目录

  • 1、前言
  • 2、安装与配置
    • 2.1、InfluxDB
    • 2.2、Grafana
    • 2.3、Jmeter
  • 3、Grafana数据源
  • 4、Grafana仪表板
  • 5、Grafana官方仪表板
    • 5.1、Jmeter脚本配置
    • 5.2、使用官方模板

1、前言

在日常的性能测试工作中,经常会用到Jmeter或LoadRunner进行压测,每次压测完成后,会对各种的性能指标图表进行分析。LoadRunner的性能指标图表非常丰富与美观,但Jmeter的性能指标图表相对要简陋一些,且不够灵活对指标进行筛选。

如下图所示:Jmeter的Transactions per Second图表

本篇将以Jmeter为基础来搭建性能实时监控平台Jmeter+InfluxDB+Grafana

平台整体流程:

Jmeter(采集数据)---》InfluxDB(存储数据)---》Grafana(展示数据)

本篇主要讲解在CentOS环境下进行搭建部署

2、安装与配置

2.1、InfluxDB

InfluxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。

类似的数据库有Elasticsearch、Graphite等。

下载地址:

https://portal.influxdata.com/downloads/

1、安装

代码语言:javascript
复制
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.9.x86_64.rpm
sudo yum localinstall influxdb-1.8.9.x86_64.rpm

2、配置

代码语言:javascript
复制
vim /etc/influxdb/influxdb.conf

修改http区域:

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

修改graphite区域:

2003端口:Jmeter往数据库发数据的端口

3、启动与查看状态

(1)启动

代码语言:javascript
复制
systemctl start influxdb.service

(2)查看状态

代码语言:javascript
复制
systemctl status influxdb.service

如图所示:已启动

4、创建数据库

进入数据库

代码语言:javascript
复制
influx

创建数据库jmeter

代码语言:javascript
复制
CREATE DATABASE "jmeter"

之后输入 exit,退出即可。

2.2、Grafana

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。

下载地址:

https://grafana.com/grafana/download

1、安装

代码语言:javascript
复制
wget https://dl.grafana.com/oss/release/grafana-8.1.2-1.x86_64.rpm
sudo yum install grafana-8.1.2-1.x86_64.rpm

2、配置

代码语言:javascript
复制
vim /etc/grafana/grafana.ini

3、启动与查看状态

(1)启动

代码语言:javascript
复制
systemctl start grafana-server.service

(2)查看状态

代码语言:javascript
复制
systemctl status grafana-server.service

如图所示:已启动

4、访问登录

打开浏览器,访问地址http://IP:3000,出现如下界面,说明Grafana服务启动成功。

输入用户名和密码,均为“admin”,登录即可。

注:如果无法访问,检查一下防火墙设置。

解决方法:

方式一(关闭防火墙)

代码语言:javascript
复制
systemctl stop firewalld

方式二(开启防火墙,添加开放的端口)

(1)开启防火墙

代码语言:javascript
复制
systemctl start firewalld

(2)添加开放端口(例如端口3000)

代码语言:javascript
复制
firewall-cmd --zone=public --add-port=3000/tcp --permanent

(3)更新防火墙规则

代码语言:javascript
复制
firewall-cmd --reload

防火墙相关命令:

  • 开启防火墙
代码语言:javascript
复制
systemctl start firewalld
  • 关闭防火墙
代码语言:javascript
复制
systemctl stop firewalld
  • 查看防火墙状态
代码语言:javascript
复制
systemctl status firewalld.service
  • 查看已开放的端口
代码语言:javascript
复制
firewall-cmd --list-ports
  • 添加开放端口,例如3000(开放后需要更新规则才能生效)
代码语言:javascript
复制
firewall-cmd --zone=public --add-port=3000/tcp --permanent
  • 更新防火墙规则
代码语言:javascript
复制
firewall-cmd --reload

2.3、Jmeter

确保Jmeter所在系统环境已安装Java环境。

Jmeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。

下载地址:

http://jmeter.apache.org/download_jmeter.cgi

下载压缩包后,默认解压即可(例如版本5.4)

1、脚本

打开Jmeter,创建要进行压测的脚本。

如图所示:示例脚本创建完成

2、配置

在线程组中,添加监听器(Listener)- Backend Listener。

Backend Listener参数项:

代码语言:javascript
复制
Backend Listener implementation默认选择org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient
graphiteHost:InfluxDB服务器的IP地址
graphitePort:InfluxDB服务器的端口(默认2003)
rootMetricsPrefix:指标的根前缀(将测试结果存入数据库时,不同指标会生成不同的表,但这些表都会有一个共同的前缀)
summaryOnly:当线程组有多个请求,又想知道每个请求的结果数据时,最好填false,因为true只会返回所有请求的集合数据报告,不会输出每条请求的数据报告。
samplersList:取样器列表(想收集哪些请求就填哪些,可以用正则去匹配)
useRegexpForSamplersList:是否使用正则(如果true则使用,samplersList里可以匹配正则表达式)
percentiles:百分比(类似聚合报告里90% Line,95% Line,99% Line的数据;若想要99.9时,需要写成 99_9 ,用下划线代替点)

如图所示:配置完成

3、Grafana数据源

登陆Grafana。

创建数据源。

方式一:首页直接点击数据源

方式二:左侧选择配置-数据源

选择InfluxDB作为数据源。

填写配置信息:

Name:自定义名称

URL:当InfluxDB和Grafana安装到同一台服务器上,可写localhost

Database:匹配安装InfluxDB时,修改配置文件graphite区域的库名(这里为jmeter)

之后点击保存即可。

4、Grafana仪表板

创建仪表板。

方式一:首页直接点击仪表板

方式二:左侧选择创建-仪表板

新增面板区域。

之后点击Add an empty panel,添加一个空面板,并根据实际情况配置仪表板。

设置数据源,添加不同的指标,之后保存即可。

仪表板创建完成。

之后执行Jmeter脚本进行压测,可实时监控指标的走向。

监控效果图(监控最近15分钟)

5、Grafana官方仪表板

5.1、Jmeter脚本配置

在线程组中,添加或修改监听器(Listener)- Backend Listener。

Backend Listener参数项:

代码语言:javascript
复制
Backend Listener implementation选择org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient
influxdbUrl:InfluxDB的URL路径(http://InfluxDB服务器的IP地址:8086/write?db=数据库名)
application:应用名称(在数据库的events表中对应的字段是application)
measurement:表名(数据存储到的表,默认jmeter)
summaryOnly:当线程组有多个请求,又想知道每个请求的结果数据时,最好填false,因为true只会返回所有请求的集合数据报告,不会输出每条请求的数据报告。
samplersRegex:取样器(想收集哪些请求就填哪些,可以用正则去匹配)
percentiles:百分比(类似聚合报告里90% Line,95% Line,99% Line的数据;若想要99.9时,需要写成 99_9 ,用下划线代替点)
testTitle:测试名称(在数据库的events表中对应的字段是text,Jmeter在测试的开始和结束时自动生成注释,该注释的值以'started'和'ended'结尾)
eventTags:Grafana允许为每个注释显示标签(在数据库的events表中对应的字段是tags)

如图所示:配置完成

注:可以使用InfluxDB Studio客户端连接工具来查询数据库。

如图所示:查询的是events表数据

5.2、使用官方模板

官方模板库

https://grafana.com/grafana/dashboards

按条件进行搜索,点击进入第一个模板。

点击Download JSON,下载此模板的Json文件。

打开Grafana,点击Import。

选择已下载完成的模板Json文件。

填写配置后,点击Import即可。

仪表板创建完成。

仪表板没有数据状态。

之后执行Jmeter脚本进行压测,实时监控指标的走向。

根据实际需要,进行数据筛选。

监控效果图:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 2.1、InfluxDB
  • 2.2、Grafana
  • 2.3、Jmeter
  • 5.1、Jmeter脚本配置
  • 5.2、使用官方模板
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档