jmeter性能监控工具
一切的性能测试,都需要有性能监控。一切可监控的资源,尽可能都监控起来。
监控: 监控工具 + 监控平台
监控工具,容易上手。
ServerAgent监控、nmon、influxdb+grafana、Prometheus+grafana+xxxxxxx
ServerAgent监控
serverAgent这个监控工具,可以和JMeter集成的,在JMeter的图形界面中,可以实时看到监控的数
据。但是,它只能监控硬件资源使用情况。 不能监控应用服务。
serverAgent是监控操作系统的资源使用情况。
serverAgent要放到被测试服务器上。安装unzip命令yum install unzip
解压unzip serverAgent_xxx.zip
使用 ./startAgent.sh ====一定要有 java的运行环境
默认的数据传输协议是 http的tcp 和udp, serverAgen的端口是 4444 这个端口,在某一些云服务器上,云服务器的提供商是不运行对外开发这个端口的。
- 如果你在自己的云服务器上部署了一个服务要能被访问到,一定要在云服务器的管理平台中,添加安全策略,在里面开放这个端口。
./startAgent.sh --tcp-port 6789 --udp-port 0
改变 监控工具的通信协议的端口
检查jmeter发起方和被测服务器之间的网络是通的telnet ip 6789
JMeter与serverAgent集成。
在JMeter中添加 PerfMon Metrics Collector 监听器
由图中可以看出在刚开始cpu就占用了将近100%,内存占用了90%。说明系统存在性能问题(先不优化,还要查看其他性能参数)
cli命令执行性能测试, 生成jtl文件不会有任何的服务器资源监控的数据
nmon
这个监控工具,只能监控 linux系统。
这个工具,是一个独立的linux系统监控工具,不与性能测试工具有关联。
这个工具,只能监控 硬件资源, 不能监控 软件服务。
在现在银行系统中使用比较多。
下载工具
先要确认自己的linux系统的架构、发行版本。
通过: uname -a
看到 系统的cpu架构
通过 cat /etc/redhat-release
可以看到发行版本 ------redhat加载
如果是其他系统(ubuntu) cat /etc/os-release
文件
监控的包和 分析用包
把 监控用到包上传到 被监控机器上。
nmon性能分析工具
解压tar -xzvf nmon16m_helpsystems.tar.gz
除了和我们版本相同的文件,其他的都可以删除
nmon_x86_64_centos7 -h
获取帮助
三种模式:
On-screen Stats 实时屏幕展示模式 -----不会保存监控数据到文件
Data Collection 数据收集模式 ------界面上不会显示,收集数据到文件,一个nmon格式
Capacity Plan 固定计划执行模式 ----- 按照固定设定数据收集放置执行,把数据写入到文件
实时屏幕交互模式:
./nmon_x86_64_centos7
不要带参数
快捷键: cmdnl
退出键:q
数据收集模式
nmon_x86_64_centos7 -f 输出结果到文件
-s 间隔多长时间拍一次快照
-c 次数
如果只写一个-f参数,这个命令就会自动收集1天的数据,保存到一个文件,1天时间到了这个命令才会退出。
nmon_x86_64_centos7 -f -s3 -c100
命令释义:
-s3:间隔3秒钟收集一次数据,
-c100:总共收集100次,
执行300秒之后这个命令就会自动退出。
使用 nmon的分析工具
解压分析工具之后,会有一个 xlsm文件,这个文件,是一个 带有宏的文件,这个需要使用 微软的
office打开。 会提示要启用宏, 启用了才能去分析 nmon文件
固定计划执行模式
有固定的三个参数
-x 一天 nmon_x86_64_centos7 -x
-X 一个小时
-z 保存文件到var文件夹下,需要超管账户
grafana + influxdb1.x + JMeter 性能监控平台
grafana 前置展示界面
- 界面是通过模板,来配置。
- 换一个模板,就可以换调前端的界面展示。
influxdb 时序数据库
- 是根据时间顺序来记录数据的一个数据库。
- 每一条数据都有一个时间(一般是时间戳)
- influxQL 这个数据库的自有sql语句 ------- 非常类似关系型数据库的标准SQL
- 现在用到 JMeter做性能测试,数据存到influxdb数据库中,influxdb的版本,建议使用1.x
- influxdb已经有2.x 版本, 但是在JMeter5.4以下的版本中,使用很麻烦。
JMeter有一个后端监听器元件
- 可以与influxdb集成
- 就可以把 JMeter做性能测试时的一些性能数据,写入influxdb数据库
监控平台环境搭建 安装 grafana和influxdb
自己用云盘中 空系统的ova文件,创建出一个空系统
性能监控平台,一般是不会搭建在被测系统上的。
把 grafana 和influxdb1.x的rpm包上传到 机器
不要去传 influxdb2.x, 更不要在机器上安装 influxdb2.x版本, 如果安装了2.x 你的influxdb1.x是不能再安装成功的。
grafana-7.4.3-1.x86_64.rpm 、influxdb-1.7.0.x86_64.rpm
yum install influxdb-1.7.0.x86_64.rpm -y
yum install grafana-7.4.3-1.x86_64.rpm -y
安装完成之后,系统中,就会有 grafana和influxdb这个两个软件。
influxdb
启动数据库的命令: influxd
操作influxdb数据库,需要另外再开启一个终端窗口
进入数据库的命令行模式命令: influx
看到: influxdb这个数据库,可以通过http协议,访问8086
端口。
influxdb时序数据库地址
show databases;
create database jmeter;
use jmeter;
show measurements; 查看当前库下面有哪些表。
这个监控平台,不需要自己创建表。
启动grafana: systemctl restart grafana-server
检查grafana是否启动ps -ef | grep grafana
可以通过,http://grafana的ip:3000
账密:admin/admin
选择首页的添加数据源
选择influxdb
填写名称
URL: http://influxdb的ip地址:8086
InfluxDB Details
database: jmeter
点击 sava & test 出现绿色 说明操作成功
jmeter进行性能测试生成数据
JMeter中,添加后端监听器
选择 带有 influxdb 的监听器实现
配置信息:
influxdbURL: http://influxdb的ip:8086/write?db=jmeter
运行脚本后可以通过查询语句查询表中的数据
grafana配置界面展示数据
左侧菜单 +号, 找import
访问https://grafana.com/网站,点击网页最下方Dashboards查找InfluxDB 相关的面板
输入面板的id: 5496 load 或下载对应json文件或复制json文件内容
因为这个是 在国外, 有些地方,网络原因,连接不上的问题。
DB name: 选择之前添加的influxdb数据源的名称
确保 measurement的值,与 JMeter后端监听器中 measurement的值一致。
确定
模板的界面,右上角,可以选择时间范围
Jmx exporter+Prometheus+Grafana 监控
JVMgrafana + prometheus + jvm_exporter
下载prometheus 并解压
tar xvfz prometheus-2.34.0.linux-amd64.tar.gz
给与运行权限
chmod +x prometheus-2.20.1.linux-amd64.tar.gz
配置jvm监控端口
在Prometheus的配置文件中配置jvm的信息
vim prometheus.yml
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:3088'] # JVM Exporter的地址和端口,需要和下方的JVM端口一致
启动Prometheus:运行Prometheus服务器。
./prometheus --config.file=prometheus.yml
访问:http://IP:9090/,验证Prometheus是否启动成功
想查看prometheus监控jvm信息,可以在界面中执行,jvm_info
-
配置catalina.sh文件 JAVA_OPTS=“-javaagent:./jmx_prometheus_javaagent-0.14.0.jar=3088:./tomcat.yml”
-
JAVA_OPTS=“-javaagent:./jmx_prometheus_javaagent-0.15.0.jar=6088:./tomcat.yml”
-
https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/下载jvm_exporter.jar 到tomcat的bin文件夹
-
https://github.com/prometheus/jmx_exporter/blob/main/example_configs/tomcat.yml 配置tomcat.yml文件 到tomcat的bin文件夹
选着对应的java版本,这里我选择是0.14版本
启动tomcat
启动grafana: systemctl restart grafana-server
检查grafana是否启动` ps -ef | grep grafana
打开grafana页面http://192.168.100.104:3000/
配置grafana
引入模板:7727
使用8563的模板时候,job的配置, 一定要与 prometheus.yml文件中 job_name 要相同
待续