性能监控
性能监控
一、ServerAgent
1、性能监控是监测性能测试过程中,服务器资源使用情况
2、ServerAgent监控范围:linux服务器、windows服务器
2.1 一般用于监控服务器的硬件资源使用情况
2.2 serveragent的服务,可以使用tcp、udp两种方式来传递监控数据
2.2.1 两种协议的端口:默认为 4444
3、使用方法
3.1 上传ServerAgent到被测服务器
3.2 unzip ServerAgent-2.2.3.zip解压缩,如果没有安装,则执行命令yum install unzip -y安装解压插件 ---》cd ServerAgent-2.2.3 ----》./startAgent.sh启动
3.3 看网络是否联通:本地cmd----》输入telnet ipaddress 4444
3.4 在jmeter的图像界面中添加 监听器> PerfMon Metrics Collector
注意:当你想监控 不同的硬件资源使用情况时,请使用多个监听器,不要合并在一个监听器里面。
4、自定义端口:4444这个端口,在一些云服务器中,是不被允许开放,所以我们需要启动服务时,指定端口,修改端口后,jmeter中新建监听器时端口也要跟着变化
4.1 ./startAgent.sh --tcp-port 自定义端口 --udp-port 0
4.1.1 --tcp-port 端口, 自己指定一个tcp协议的端口,端口范围 1024~65535 (一般用四位数的端口)
4.1.2 --udp-port 0 不开放端口服务,不使用upd数据传输方式
二、nmon
1、简介:nmon 本身是一个个人用于监控linux系统资源使用情况的软件。nmon只能监控linux机器
2、nmon工具,本身与jmeter没有强关联
3、工具使用:
3.1 获取linux系统的类型:centos、Ubuntu
3.1.1 centos类型服务器输入命令: cat /etc/redhat-release
3.1.2 其他类型:cat /etc/os-release
3.2 获取版本后下载对应的nmon版本:Download nmon for Linux from SourceForge.net
3.3 下载nmon放到被监控的机器上,解压获取帮助:tar -xzvf nmon16m_helpsystems.tar.gz
3.4 nmon的使用有三种模式
3.4.1 On-screen Stats:实时屏幕交互模式nmon_x86_64_centos7
3.4.2 Data Collection: 数据收集模式nmon_x86_64_centos7 -f [-s ] [-c ] [-t|-T] ,中括号中的数据可传可不传
3.4.3 Capacity Plan: 定时计划模式nmon_x86_64_centos7 -x
3.5 实时屏幕交互模式
3.5.1 默认2s秒钟刷新异常数据
3.5.2 快捷键: cmdn分别为CPU,内存,磁盘,网络
3.5.3 实时屏幕交互模式,可以直接看到服务器硬件资源使用情况,但是,这个过程数据不能保存
3.6 数据收集模式
3.6.1 -f 参数 会把数据保存到一个.nmon结尾的csv文件中:-f 默认时候,-s300 -c288;-f 如果后面没有-s -c设置的话,默认会执行24个小时
3.6.2 -s 间隔时间;-c 总共收集的次数;如果想自定义执行时长:nmon_x86_64_centos7 -f -s3 -c80
3.6.3 写入一个 hostname_yyMMdd_hhmm.nmon格式的文件 --- 待测试结束之后,下载nmon文件 --- 下载Nmon-Analyser(解压,有一个xlsm文件,这是一个带有宏的文件,使用微软office打开,不能用wps打开(wps不支持宏))
3.7 定时计划模式
3.7.1 -x -ft -s 900 -c 96 每隔15分钟收集一次,总共收集96次,一天
3.7.2 -X -ft -s 30 -c 120 每隔30s收集一次,总共收集120, 一小时
3.7.3 -z 类似-x 但是,它保存文件路径/var/perf/tmp
三、influxdb与jmeter集成
1、简介:influxdb 是一个时序数据库,根据时间顺序来存储数据,jmeter可以直接把数据存入influxdb数据库,在测试过程中,可以一边测试,一边把测试数据存入 influxdb数据库
2、版本:influxdb目前有两个大版本,1.x版本,2.x版本,这两个版本不兼容,jmeter常用版本,是可以直接与1.x版本的influxdb兼容使用,2.x版本,使用比较复杂。
3、grafana:一个监控平台的前端可以用来展示数据,可以使用不同的模板来让相同数据,展示成不同的效果。它获取的是后端数据库,而后端数据,一般使用的是时序数据库,所以grafana + influxdb1.x + jmeter解决方案组成一套监控平台
4、influxdb安装(1.7版本)与使用
4.1 上传influxdb包到非测试服务器,执行yum install influxdb-1.7xx.rpm -y安装influxdb
4.2 启动influxdb:执行命令influxd,服务端口:8086
4.3 再开启另外一个终端,执行influx,Enter an InfluxQL query这样我们就可以开始执行 InfluxQL脚本
4.4 show databases查看数据库 --- 创建库:create database jmeter
4.5 jmeter把测试数据写入库:添加后端监听器,实现选择:org apache imeter visualizers.backend influxdb.InfluxdbBackendListenerc,修改URL为监控服务器的IP地址
4.6 时序数据库命令行模式中执行:“use jmeter;”:进入jmeter库;查看数据“select * from jmeter;”;exit 退出
5、grafana 与 influxdb集成
5.1 简介:grafana是一个前端展示平台,获取后端数据库中的数据,通过不同的模板,把数据展示成为不同的效果。
5.1.1 后端数据库,可以选择用不同的数据库,比如influxdb或者prometheus数据库
5.1.2 模板:把数据展示成为不同的效果。
5.1.3 grafana的服务端口: 3000 登录账户:admin 密码:admin
5.2 安装命令:yum install grafana-7.4.3-1.x86_64.rpm -y
5.2.1 安装后这个工具,就成为了系统工具,有一个系统命令 grafana-server
5.2.2 启动命令1:systemctl start grafana-server 启动命令2:service grafana-server start
5.2.3 停止命令:systemctl stop grafana-server
5.3 启动后浏览器访问:http://grafana安装服务器IP:3000 登录名:admin 密码:admin
5.3.1 加数据源点击: add your data source
5.3.2 选择: influxdb
5.3.3 信息编辑界面:
5.3.3.1 name:自定义
5.3.3.2 query language:选择InfluxQL;
5.3.3.3 URL: http://you_influxdb_ip:8086
5.3.3.4 Database: jmeter
5.3.3.5 save & test 出现两个绿色提示,说明你填写的信息正确
5.4 引入模板:页面点击左侧菜单“+”号 --> import
5.4.1 访问 grafana.com 网站,下拉页面,点击dashboard模板,找到合适的模板,查看ID
5.4.2 输入 5496 -> load (因为这个grafana.com网站是国外的,在国内某些地区因为网络原因,可能不能访问)
5.4.3 name: 只要不重复
5.4.4 DB name: 选择我们上面配置influxdb数据源的名称 ---点击import
注意事项:监控平台中没有数据(5496)
1、看右侧的时间范围。 因为我们的服务器时间可能不一致,可能存在时差。因为时差导致界面看不到数据,把时间范围调整大于等于1天
2、左侧顶部的配置信息,不正确,会出现没有数据情况。
6、grafana+prometheus
6.1 prometheus普罗米修斯,也是一个时序数据库,只是存数据
6.2 用prometheus有非常多的扩展exporter来收集监控
6.3 prometheus不需要与jmeter集成,只需要用exporter来收集你响应监控的内容。
6.3.1 如果你想要监控硬件资源使用情况,你就用 node_exporter 收集,然后,把数据存放到prometheus就可以
6.3.2 如果你想要监控tomcat、nginx、mysql、redis、docker..... 都使用他们对于exporter来收集,然后,把数据存放到prometheus就可以
6.3.3 你要收集什么, 那么对于exporter就放在你收集的对象的机器上。exporter放在被收集对象的服务一起
6.4 搭建:prometheus+ grafana +xxxx_exporter
6.4.1 prometheus:安装在非被测服务器
6.4.2 grafana: 非被测服务器
6.4.3 xxxx_exporter: 被测服务器
6.5 prometheus的安装
6.5.1 prometheus-2.20.1.linux-amd64.tar.gz包上传到非被测服务器
6.5.2 解压
6.5.3 prometheus.yml 配置文件
- job_name: 'node_export' static_configs: - targets: ['被测服务器地址:9100']
6.6 node_exporter安装
6.6.1 node_exporter-1.1.1.linux-amd64.tar.gz包 上传到 被测服务器上
6.6.2 解压,进入解压后的文件夹
6.6.3 ./node_exporter 端口 9100 nohup ./node_exporter &
6.7 修改prometheus的配置文件
6.7.1 prometheus.yml 配置文件
6.7.2 启动prometheus,prometheus的端口 9090
6.8 配置grafana
添加数据源,prometheus URL:http://prometheus_ip:9090 save & test 引入模板:import 12884 选择正确数据源
四、zabbix
1、简介:它是一个 企业级成熟的服务器监控平台,它自身就是一个监控平台。可以独立于我们性能测试,可以单独用它来监控应用服务器,通常运维人员也会拿它来监控服务器。
2、zabbix的组成:
2.1 zabbix-server: 后端服务
2.1.1 数据库:多种数据库可选,我们选用 MySQL
2.1.2 front: 前台展示数据,也是使用模板
2.2 zabbix-agent:收集器,放到被监控机器上,可以收集几乎所有数据
2.3 proxy:网络代理
3、zabbix的安装
3.1 登录网站:https://www.zabbix.com/cn/download
3.2 zabbix appliance 选择合适的ovf文件下载,导入虚拟机,也可以自己自己准备一个空centos7的系统
3.3 zabbix packages:版本---5.0LTS;OS---centos;os版本---7;dbms---mysql;webserver---nginx;
3.4 修改配置文件:vim /etc/selinux/config,修改后退出:ESC后输入:wq退出
3.4.1 修改SELINUX=permissive
3.4.2 centos的安全策略配置 默认配置,高安全度,做一些不够安全的事情时候,会进 行拦截。 改成 permissive 之后,降低安全度,只会记录我们的操作,不会拦截我们的操作。
3.5 重启系统:reboot now
3.6 执行安装命令:
1、Install Zabbix repository: (1)rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
(2)yum clean all
2、Install Zabbix server and agent:
(1)获取mysql:wget https://dev.mysql.com/get/mysql80-community-release-el7- 5.noarch.rpm;rpm -Uvh mysql80-community-release-el7-5.noarch.rpm
(2)修改文件使其可以安装5.x版本:vim /etc/yum.repos.d/mysql-community.repo 修改:[mysql57-community] enable=1 [mysql80-community] enable=0
(3)安装mysql:yum install mysql-community-server -y
(4)重启mysql:systemctl restart mysqld
(3)yum install zabbix-server-mysql zabbix-agent
性能测试中,一定要有监控,不管你用哪个(ServerAgent、nmon、grafana+influxdb、 grafana+prometheus、 zabbix) 为什么? 因为,监控,才能有数据(性能测试数据、服务器资源使用情况数据、中间件的数据。)有这些数据,才能进行性能分析。