性能工具之JMeter + Grafana + InfluxDB 性能平台搭建

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
云防火墙,500元 1000GB
简介: 【8月更文挑战第7天】性能工具之JMeter + Grafana + InfluxDB 性能平台搭建

一、准备

  • 环境:Linux环境
  • grafana-4.5.2-1.x86_64.rpm
  • influxdb-1.2.2.x86_64.rpm
  • JMeter 5.x 及以上

    1、CentOS 6

重启防火墙:service iptables rstart
查看状态:service iptabes status
关闭防火墙:service iptables stop
关闭防火墙(重启生效):chkconfig iptables  off(关闭)/on(开启)
查看自启动状态列表  chkconfig  iptables --list

2、CentOS 7

使用如下:

关闭防火墙:systemctl stop firewalld.service
查看状态:systemctl status firewalld.service
           绿的running表示防火墙开启
禁用防火墙(系统启动时不启动防火墙服务):systemctl disable firewalld
systemctl is-enabled firewalld

二、安装

1、离线安装

安装文件上传工具:

yum install -y lrzsz

image.png

上传安装包:

grafana-4.5.2-1.x86_64.rpm、influxdb-1.2.2.x86_64.rpm

本机上传路径:
image.png

提示:
image.png

安装方法:

wget et https://dl.influxdata.com/influxdb/releases/influxdb-1.6.2.x86_64.rpm
rpm -ivh influxdb-1.2.0.x86_64.rpm

image.png

提示:
image.png

执行命令:

[root@localhost ~]# rpm -ivh influxdb-1.2.2.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:influxdb-1.2.2-1                 ################################# [100%]
Created symlink from /etc/systemd/system/influxd.service to /usr/lib/systemd/system/influxdb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/influxdb.service to /usr/lib/systemd/system/influxdb.service.

2、在线安装

yum下载Grafana并且安装:

https://grafana.com/docs/installation/rpm/
yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.1-1.x86_64.rpm

结果:
image.png

提示:

[root@localhost ~]# rpm -ivh grafana-4.5.2-1.x86_64.rpm 
warning: grafana-4.5.2-1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 24098cb6: NOKEY
error: Failed dependencies:
        fontconfig is needed by grafana-4.5.2-1.x86_64
        urw-fonts is needed by grafana-4.5.2-1.x86_64

image.png

执行:

[root@localhost ~]# yum install -y urw-fonts
rpm -ivh grafana-4.5.2-1.x86_64.rpm

image.png

执行命令:

root@localhost ~]# rpm -ivh grafana-4.5.2-1.x86_64.rpm 
warning: grafana-4.5.2-1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 24098cb6: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:grafana-4.5.2-1                  ################################# [100%]
### NOT starting on installation, please execute the following statements to configure grafana to start automatically using systemd
 sudo /bin/systemctl daemon-reload
 sudo /bin/systemctl enable grafana-server.service
### You can start grafana-server by executing
 sudo /bin/systemctl start grafana-server.service
POSTTRANS: Running script
[root@localhost ~]#

三、配置

1、InfluxDB的配置

主要配置jmeter存储的数据库与端口号,还有需要将UI端口开放。

修改配置influxdb.conf:

[root@localhost ~]# vi /etc/influxdb/influxdb.conf
# 找到graphite并且修改它的库与端口
[[graphite]]
enabled = true
bind-address = ":2003"
database = "jmeter"
retention-policy = ""
protocol = "tcp"
batch-size = 5000
batch-pending = 10
batch-timeout = "1s"
consistency-level = "one"
separator = "."
udp-read-buffer = 0

如图:
image.png

修改配置:
找到admin,将前面的#号去掉,开放它的UI端口

# 找到admin,将前面的#号去掉,开放它的UI端口
[admin]
  # Determines whether the admin service is enabled.
  enabled = true
  # The default bind address used by the admin service.
  bind-address = ":8083"
  # Whether the admin service should use HTTPS.
  # https-enabled = false
  # The SSL certificate used when HTTPS is enabled.
  # https-certificate = "/etc/ssl/influxdb.pem

如图:
image.png

保存并推出:【:wq】

image.png

启动InfluxDB:

[root@localhost ~]# /etc/init.d/influxdb restart
Stopping influxdb...
influxdb process was stopped [ OK ]
Starting influxdb...
influxdb process was started [ OK ]

如图:
image.png

CentOS7启动方式:

[root@localhost ~]# service influxd.service start                               
Redirecting to /bin/systemctl start influxd.service  / systemctl restart influxd.service
[root@localhost ~]#
[root@localhost ~]# influx
Connected to http://localhost:8086 version 1.2.2
InfluxDB shell version: 1.2.2
> exit
##启动后TCP端口:8083 为InfluxDB 管理控制台
##TCP端口:8086 为客户端和InfluxDB通信时的HTTP API

检查:端口是否启动[netstat -ntlp]
image.png

查看防火墙:
image.png

页面访问:
image.png

创建数据库:

CREATE DATABASE "jmeter"

image.png

创建成功提示:
image.png
验证数据数据:
image.png

2、Grafana配置

启动Grafana:

/etc/init.d/grafana-server restart

image.png

CentOS7:

 service grafana-server start/ systemctl restart grafana-server

image.png

查看相关服务:

[root@localhost ~]# ps -ef | grep grafana
grafana   1751     1  0 06:52 ?        00:00:00 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins
root      1786  1507  0 07:00 pts/0    00:00:00 grep --color=auto grafana
[root@localhost ~]# ps -ef | grep influxd
influxdb  1775     1  0 06:55 ?        00:00:00 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
root      1849  1507  0 07:00 pts/0    00:00:00 grep --color=auto influxd
[root@localhost ~]#
[root@localhost ~]# netstat -nlp | grep 1751
tcp6       0      0 :::3000                 :::*                    LISTEN      1751/grafana-server 
[root@localhost ~]#

image.png

通过进程查看端口:netstat -nlp | grep 1751
在这里插入图片描述

验证 http://IP:3000/login
image.png
输入用户名,密码登录系统。用户名与密码都是"admin"

配置相关数据:

添加InfluxDB数据库配置。输入帐号密码“admin / admin”,点击Test & Save 提示“Success”说明成功了

  • 8083端口是InfluxDB的UI界面展示的端口
    • 8086端口是Grafana用来从数据库取数据的端口
    • 2003端口则是刚刚设置的,Jmeter往数据库发数据的端口

【注意】URL的端口是8086,而刚才配置的8083是UI的端口。
image.png

配置连接成功:
image.png
配置:

选择导入模板
image.png
下载模板:

https://grafana.com/grafana/dashboards

image.png
或者选择:
image.png

导入下载模板:
image.png
选择数据源:
image.png

或者选择:

image.png
显示成功:
image.png

调试整个显示:
image.png

相关说明:

线程数/用户相关指标

  • test.minAT-Min active threads:最小活跃线程数
  • test.maxAT-Max active threads:最大活跃线程数
  • test.meanAT-Mean active threads:活跃线程数
  • test.startedT-Started threads:启动线程数
  • test.endedT-Finished threads:结束线程数

响应时间指标

  • .ok.count:采样器的成功响应数
  • .h.count:每秒点击数
  • .ok.min:采样器成功最短响应时间
  • .ok.max:采样器成功最长响应时间
  • .ok.avg:采样器成功平均响应时间
  • .ok.pct:采样器成功响应百分比
  • .ko.count:采样器失败响应数
  • .ko.min:采样器失败的响应最短时间
  • .ko.max:采样称失败最长响应时间
  • .ko.avg:采样器失败平均响应时间
  • .ko.pct:采样器失败响应百分比
  • .a.count:采样器响应数(ok.count和ko.count的总和)
  • .a.min:采样器最小响应时间(ok.count和ko.count的最小值)
  • .a.max:采样器最大响应时间(ok.count和ko.count的最大值)
  • .a.avg:采样器平均响应时间(ok.count和ko.count的平均值)
  • .a.pct:采样器响应百分比(根据和失败样本的总数计算)

Backend Listener的默认百分位设置为“90;95;99”,即百分位数为90%,95%和99%。

Graphite使用点(“.”)去拆分的元素,这可能与十进制百分位值混淆。JMeter转换任何此类值,用下划线(“ - ”)替换点(“.”)。例如,“99.9 ”变为“99_9 ”。

默认情况下,JMeter发送在samplerName“all”下累计的所有采样器的指标。如果配置了 BackendListenerSamplersList,那么JMeter还会发送匹配样本名称的指标,前提是配置 summaryOnly=true

3、JMeter参数文件设置

创建线程组:
image.png
选择监听器backend Listener

  1. 将“summanyOnly”修改成False,
  2. 将“userRegexpForSamplersList”修改成True,
  3. 并且要设置“samplersList”的值,“samplersList”是可以支持正则表达式的,“samplersList”的设置要与请求对应,否则找不到该请求。

【注意】如果要监控<请求名称>的话,Jmeter上的“Backend Listener”修改如下参数

如图:
image.png

配置项 配置内容
influxdbMetricsSender org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
influxdbUrl http://192.168.7.129:8086/write?db=jmeter
application Jmeter_test
measurement jmeter
summaryOnly FALSE
samplersRegex ^[^#_].*
percentiles 50;90;95;99
testTitle test

eventTags| |

简单介绍:

名称描述

  • jmeter.all.h.count所有请求的TPS
  • jmeter.<请求名称>.h.count对应<请求名称>的TPS
  • jmeter.all.ok.pct9999%的请求响应时间
  • jmeter.<请求名称>.ok.pct99对应<请求名称>99%的请求响应时间
  • jmeter.all.test.startedT线程数

四、运行效果

验证结果:
image.png

实战数据显示:
image.png
实战数据:
image.png

image.png

相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
目录
相关文章
|
3天前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
13 2
|
1月前
|
测试技术 持续交付 Apache
性能怪兽来袭!Python+JMeter+Locust,让你的应用性能飙升🦖
【8月更文挑战第5天】随着互联网应用规模增长,性能测试至关重要。本文介绍如何利用Python结合Apache JMeter和Locust构建高效可定制的性能测试框架。JMeter广泛用于负载测试,通过模拟大量虚拟用户并发访问来评估性能。Locust基于Python,通过编写简单脚本模拟HTTP请求,特别适合Web应用测试,比JMeter更灵活易扩展。Python作为胶水语言简化测试脚本编写并流畅自动化流程。文章提供JMeter命令行测试和Locust脚本示例,并展示如何用Python自动化执行和整合测试结果,最终帮助应用在高负载下稳定运行。
54 1
|
13天前
|
数据采集 缓存 监控
优化 Grafana 性能:技巧与窍门
【8月更文第29天】Grafana 是一个非常受欢迎的开源数据可视化平台,它能够连接到各种数据源并提供高度定制化的仪表板。然而,随着数据量的增长和复杂查询的增多,Grafana 的性能可能会受到影响。本文将探讨如何优化 Grafana 的性能,以提高其响应速度和稳定性,并通过具体的代码示例来展示这些技巧。
39 1
|
1月前
|
监控 Java 测试技术
实战派必看!Python性能测试中,JMeter与Locust如何助力性能调优
【8月更文挑战第6天】性能优化是软件开发的关键。本文介绍JMeter与Locust两款流行性能测试工具,演示如何用于Python应用的性能调优。JMeter可模拟大量用户并发访问,支持多种协议;Locust用Python编写,易于定制用户行为并模拟高并发。根据场景选择合适工具,确保应用在高负载下的稳定运行。
77 4
|
1月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【8月更文挑战第6天】在数字化时代,确保软件在高并发下的稳定性至关重要。Python 提供了强大的性能测试工具,如 JMeter 和 Locust。JMeter 可配置复杂请求场景,而 Locust 则以 Python 脚本灵活模拟真实用户行为。两者结合,可全面评估系统性能。例如,对电商网站进行测试时,JMeter 模拟登录请求,Locust 定义浏览和购物行为,共同揭示系统瓶颈并指导优化,从而保证稳定高效的用户体验。
67 1
|
1月前
|
数据采集 监控 Unix
性能监控之Telegraf+InfluxDB+Grafana实现结构化日志实时监控
【8月更文挑战第1天】性能监控之Telegraf+InfluxDB+Grafana实现结构化日志实时监控
152 0
|
2月前
|
测试技术 Linux
linux 服务器运行jmeter 进行服务性能压测
linux 服务器运行jmeter 进行服务性能压测
45 0
|
3月前
|
测试技术 Windows
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(下)
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(下)
52 2
|
3月前
|
测试技术 程序员
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(上)
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(上)
79 1
|
1月前
|
测试技术 持续交付 Apache
深度挖掘:Python性能测试中JMeter与Locust的隐藏技能🔍
【8月更文挑战第5天】随着软件规模扩大,性能测试对系统稳定性至关重要。Apache JMeter和Locust是两大主流工具,各有千秋。本文探索它们在Python环境下的进阶用法,挖掘更多性能测试潜力。JMeter功能强大,支持多种协议,可通过命令行模式执行复杂测试计划,并与Python集成实现动态测试数据生成。Locust基于Python,通过编写简洁脚本模拟HTTP请求,支持自定义请求及与Python库深度集成。掌握这些技巧可实现高度定制化测试场景,有效识别性能瓶颈,提升应用稳定性。
102 1