JMeter 插件监控服务器资源
PerfMon Metrics Collector:服务器性能监控数据采集器。在性能测试过程中,还需要监控服务器的资源使用情况,如CPU、memory、I/O等。该插件可以在性能测试中实时监控服务器的各项资源使用。
JMeter 无法提取除 Tomcat 之外的其他服务器的默认指标,为了克服这一状况,研发了PerfMon Metrics Collector服务器代理,JMeter 通过这个代理来获取性能数据。PerfMon Metrics Collector使用的是SIGAR开源库,它是由一个 Java 通用部分和一个每个 OS 的本地库组合而成。
环境搭建
1、在服务器上搭建java环境
2、下载 ServerAgent-2.2.3.zip
3、用 Xftp 或 WinSCP 工具将 ServerAgent-2.2.3.zip上传到服务器
4、解压并启动服务器代理
unzip ServerAgent-2.2.3.zip #解压 rm -rf ServerAgent-2.2.3.zip #删除原压缩文件 cd ServerAgent-2.2.3 #切换目录sudo chmod 777 startAgent.sh #更改startAgent.sh文件的权限 nohup ./startAgent.sh & #把代理服务放到后台运行并且不挂起
netstat -tpln |grep 4444 #查看4444端口对应的进程是否已启动
备注:
1)可以在运行脚本时添加--tcp-port xxxx --udp-port xxxx来指定端口
./startAgent.sh --tcp-port 2222 ./startAgent.sh --tcp-port 2222 --udp-port 2222
2)测试本地是否能连接代理
telnet server-ip 4444 #本地cmd运行
输出类似INFO 2017-07-29 23:10:52.430 [kg.apc.p] (): Yep, we received the 'test' command的日志,证明可以连接代理
3)本地连接不上代理,有可能是服务器防火墙没关,在服务器将端口4444改为允许外部IP访问(把4444端口加到白名单)
方法一:将startAgent的端口加入白名单(推荐)
firewall-cmd --add-port=4444/tcp -permanent #永久添加4444端口
firewall-cmd --list-ports #列出开放的端口,查看4444端口是否开放
方法二:关闭服务器防火墙
systemctl stop firewalld #关闭防火墙
防火墙相关其他命令:
systemctl start firewalld #开启防火墙
systemctl restart firewalld #重启防火墙
systemctl status firewalld #查看防火墙状态
4)服务器上没有安装unzip命令时,安装unzip命令
sudo yum install -y unzip zip #安装unzip和zip
监控服务器资源
1、在JMeter Plugins Manager 中安装插件 jpgc - Standard Set
2、重启JMeter,右键添加监听器jp@gc - PerfMon Metrics Collector
3、点击Add Row,填写服务器地址、服务代理的端口号、监控项
4、设置持续时间执行脚本,即可收集到服务器资源使用信息
Linux 自带的 top 命令也可以查看服务器CPU和内存使用情况(按ctrl+c退出),lscpu 命令可以查看 CPU 核数。