jmeter性能监控ServerAgent监控;nmon;grafana + influxdb1.x + JMeter 性能监控平台;Prometheus+Grafana+xx_exporter监控

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

grafana安装


自己用云盘中 空系统的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数据库,需要另外再开启一个终端窗口
进入数据库的命令行模式命令:

 influxd

看到: 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/](https://grafana.com/)网站,点击网页最下方Dashboards查找InfluxDB 相关的面板

输入面板的id: 5496 load  或下载对应json文件或复制json文件内容

因为这个是 在国外, 有些地方,网络原因,连接不上的问题。
DB name: 选择之前添加的influxdb数据源的名称
确保 measurement的值,与 JMeter后端监听器中 measurement的值一致。
确定

模板的界面,右上角,可以选择时间范围

Prometheus+Grafana+xx_exporter监控

Jmx_exporter+Prometheus+Grafana 监控 


JVMgrafana + prometheus  + jvm_exporter

安装Prometheus


[下载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 要相同

tomcat监控

grafana + prometheus  + jvm_exporter

grafana + prometheus 安装搭建详看这里


prometheus 监控 nginx

nginx-module-vts:Nginx virtual host traffic status module,Nginx的监控模块,能够提供JSON格式的数据产出。

nginx-vts-exporter:Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。

Prometheus:监控Nginx-vts-exporter提供的Nginx数据,并存储在时序数据库中,可以使用PromQL对时序数据进行查询和聚合。

查看nginx安装了哪些模块

/usr/local/nginx/sbin/nginx -V

安装git

sudo yum install git

下载nginx-module-vts

git clone https://gitee.com/mirrors/nginx-module-vts.git


进入nginx的解压文件夹,先停止nginx服务,进入nginx目录再执行 

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/opt/nginx-module-vts/  

 --add-module的路径要与上面下载文件路径一致

make 

 出现这个就安装成功了

替换Nginx启动文件
备份nginx启动文件

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak 


**停止nginx**

 pkill -9 nginx

[root@centos7 objs]# cp /opt/pcre-8.44/nginx-1.19.5/objs /usr/local/nginx/sbin/
cp: 略过目录"/opt/pcre-8.44/nginx-1.19.5/objs"
[root@centos7 objs]# cp /opt/pcre-8.44/nginx-1.19.5/objs/nginx /usr/local/nginx/sbin/
cp:是否覆盖"/usr/local/nginx/sbin/nginx"? y


**启动nginx**

/usr/local/nginx/sbin/nginx  


修改Nginx.conf配置文件,试验安装是否成功

http {

vhost_traffic_status_zone;
vhost_traffic_status on;

vhost_traffic_status_filter_by_host on;


}
server {
#设定查看Nginx状态的地址
    location /nginx_status {
    
    stub_status on;
    
    access_log  off;
    vhost_traffic_status_display;
    
    vhost_traffic_status_display_format html;
        }
    }


配置解析:
1.1 打开vhost过滤:

vhost_traffic_status_filter_by_host on;

开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上。

1.2 在统计流量的server区域开启vhost_traffic_status,配置

vhost_traffic_status on;
在重新加载 Nginx 配置之前,先检查配置文件的语法是否正确。

sudo /usr/local/nginx/sbin/nginx -t


如果配置文件语法正确,你会看到类似以下的输出:

重新加载Nginx 配置(需要启动Nginx)

sudo /usr/local/nginx/sbin/nginx -s reload

访问http://192.168.100.103/nginx_status可以查看是否监控是否成功

**安装nginx-vts-exporter**

在Prometheus机器上面,安装nginx-vts-exporter

sudo yum install wget
wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
tar xvfz nginx-vts-exporter-0.10.3.linux-amd64.tar.gz

解压
进入解压后的文件夹 

nohup ./nginx-vts-exporter -nginx.scrape_uri=http://localhost/status/format/json &


可以通过  ./nginx-vts-exporter --help  来查看参数帮助
 

安装nginx-vts-exporter 启动成功,

可以通过浏览器访问 http://ip地址:9913/metrics 如果界面显示数据比较多,说明已经有收集数据,

如果比较少,说明配置还有问题 默认端口为:9913 

配置prometheus.yml

 - job_name: 'nginx-prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['192.168.100.104:9913']

 保存配置文件,重启prometheus

./prometheus --config.file=prometheus.yml

数据库监控

Prometheus + grafana +  xxx_exporter

如果你要监控其他, 你就去github上,搜索 你要个的exporter

mysql监控

下载mysqld_exporter

解压

在解压后的路径中创建‘mysqld_exporter.cnf'配置文件

[client]
user=数据库的用户名
password=数据库的密码
host=数据库的ip地址
port=数据库的端口

vim prometheus.yml


scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
 
  - job_name: 'mysql-exporter'
    static_configs:
      - targets: ['数据库ip:9104']

模板:7362

redis监控

# 下载
wget https://github.com/oliver006/redis_exporter/releases/download/v1.17.1/redis_exporter-v1.17.1.linux-amd64.tar.gz

# 解压
tar xzf redis_exporter-v1.17.1.linux-amd64.tar.gz

# 启动
cd redis_exporter-v1.17.1.linux-amd64
nohup ./redis_exporter &

# 修改配置文件
vim prometheus.yml
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'redis-export'
    static_configs:
    - targets: ['localhost:9121']

模板id:763

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值