性能实时监控平台
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
防火墙相关命令:
- 开启防火墙
systemctl start firewalld
- 关闭防火墙
systemctl stop firewalld
- 查看防火墙状态
systemctl status firewalld.service
- 查看已开放的端口
firewall-cmd --list-ports
- 添加开放端口,例如3000(开放后需要更新规则才能生效)
firewall-cmd --zone=public --add-port=3000/tcp --permanent
- 更新防火墙规则
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脚本进行压测,实时监控指标的走向。
根据实际需要,进行数据筛选。
监控效果图: