15. 使用ServerAgent 监控服务器
15. 使用ServerAgent 监控服务器
前言
- 做性能测试,监控服务器资源指标是必须有的一步
- 这一篇博客将讲解通过 Jmeter 插件来监控服务器,再通过 Jmeter 观察监控结果
下载、安装、运行插件
- JMeterPlugins-Extras.jar
- JMeterPlugins-Standard.jar
- ServerAgent-2.2.3.zip
可以通过官方下载:https://jmeter-plugins.org/downloads/old/
注意
- 前两个插件最新版本在官网已经不提供下载了,只能下载旧版本,官方建议通过 Plugins Manager 下载需要的插件哦
- 博主安装了以下插件,已经包含上面讲的前两个插件了
![img](/assets/1896874-20200627134614313-697484455-B1I36p8S.png)
![img](/assets/1896874-20200627134614463-599958059-Coye1olA.png)
这里也提供百度云下载链接哈
链接:https://pan.baidu.com/s/1bAaKqGoyaTVoq5picgBGMw
提取码:q92i
客户端(Jmeter 端)
- 如果通过官网下载的话,就将 JMeterPlugins-Extras.jar 和 JMeterPlugins-Standard.jar 放到 D:\apache-jmeter-5.2.1\lib\ext
- 然后通过 PerfMon Metrics Collector 监听器进行服务器性能数据显示
![img](/assets/1896874-20200627134920788-100596290-DpTYczRm.png)
服务端(Linux)
将 ServerAgent-2.2.3.zip 放到任意目录下,解压
unzip ServerAgent-2.2.3.zip
进入 ServerAgent 目录
![img](/assets/1896874-20200627141544278-1985810900-CAEIyHvf.png)
我提供的 ServerAgent 里面,两个 start 脚本已经是可执行脚本了,直接运行即可
./startAgent.sh
运行成功,则会出现下图
![img](/assets/1896874-20200627142425507-1686032112-C8Q81QBT.png)
如果无法运行,则需要给脚本赋权
chmod 777 startAgent.sh
如果是想监控 Window 机器,则将 ServerAgent 放到 Window 电脑的目录下,然后直接双击运行 startAgent.bat 即可
划重点
- 启动 ServerAgent 的前提是系统已安装配置好 Java 环境
- 默认占用端口是 4444
启动 ServerAgent 可能会出现的问题
端口被占用
杀掉占用 4444 端口的进程
![img](/assets/1896874-20200627143537680-1855223128-DfLqCRIq.png)
- 先查出 4444 端口是什么进程占用
- 然后查看进程详情,确认是否能杀掉
- 如果可以,则杀掉、
ServerAgent 通过其他端口启动
./startAgent.sh --udp-port 0 --tcp-port 1234
0 代表不开启该端口,一般我们只用 tcp 足以
![img](/assets/1896874-20200627144042499-1426093380-Bz9kbbx2.png)
端口未对外开放
- 如果服务器开启了防火墙,而且之前没用过 4444 端口,那么该端口很可能会被禁用
- 为了解决防火墙和开放端口的问题,可以参考文末内容
阿里云 4444 端口不能对外开放
如果是用阿里云服务器,4444 端口是无法对外开放的,所以要通过其他端口来启动 ServerAgent
Jmeter 监控服务器全流程
一个简单的负载测试线程组结构树
![img](/assets/1896874-20200627150847453-1883726290-BHPyOSoB.png)
一般做负载测试,会监控服务器资源、活动线程数、响应时间、TPS等等,所以加了一堆监听器
PerfMon Metrics Collector
![img](/assets/1896874-20200627150859263-2054885924-BeS7-PHP.png)
IP 自然就是填需要监控的服务器 IP啦,如果是监控本机就填 127.0.0.1 就好了
可监控的指标列表
![img](/assets/1896874-20200627151157412-475723358-BW8Ycu-m.png)
还挺多,不过一般重点关注前面四个就好了
运行结果
![img](/assets/1896874-20200627152307638-243267743-CRQRxEUf.png)
我的 cpu 真高...因为数据库出现死锁了,回头可以好好性能分析一波了!
防火墙+端口
句话:如果你是买的各大厂商的云服务器,去安全组配置对应需要使用到的端口就可以啦!
因为博主用的是阿里云,所以这里就只介绍下阿里云如何开放端口,按着下面三张图来操作就行嘞
![img](/assets/1896874-20191230184614379-1088943826-BvQizIuC.png)
![img](/assets/1896874-20191230184849055-255727603-BRnXnlzz.png)
![img](/assets/1896874-20191230213742691-1720705103-CKI3sx_P.png)
这个时候有同学就说了,不通过平台的方式行不行,我想锻炼我的Linux能力...当然可以,接下来介绍下直接在Linux上配置防火墙规则来开放端口(Centos7以上,Centos6和7用的防火墙规则不一样,这里不介绍Centos6)
先掌握下 systemctl+firewall 命令
描述 | 命令 |
---|---|
查看firewall状态 | systemctl status firewalld.service |
启动firewall | systemctl start firewalld |
停止firewall | systemctl stop firewalld |
开机启动firewall | systemctl enable firewalld |
开机禁止firewall | systemctl disable firewalld |
额外学习下systemctl命令_ | |
查看服务是否开机启动 | systemctl is-enabled firewalld.service |
查看已启动的服务列表 | systemctl list-unit-files|grep enabled |
查看启动失败的服务列表 | systemctl --failed |
其次掌握 firewall-cmd 命令
描述 | 命令 |
---|---|
查看firewall全部信息 | firewall-cmd --list-all |
查看已开放的端口 | firewall-cmd --list-ports |
更新防火墙规则 | firewall-cmd --reload |
开放端口 | firewall-cmd --zone=public --add-port=3000/tcp --permanent |
关闭端口 | firewall-cmd --zone=public --remove-port=3000/tcp --permanent |
最终执行步骤:
- 首先查看firewall是否已开启: systemctl status firewalld.service
- 开放端口(开放后需要更新规则才能生效): firewall-cmd --zone=public --add-port=3000/tcp --permanent
- 更新防火墙规则: firewall-cmd --reload
![img](/assets/1896874-20191230201818036-1790155651-BUKv2O8w.png)