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

2022-07-26 14:55:43 浏览数 (1)

性能实时监控平台

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脚本进行压测,实时监控指标的走向。

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

监控效果图:

0 人点赞