一 . 基于Jmeter的压力测试 使用说明
1. jmeter简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
2. jmeter下载
根据需要下载不同版本,平台
3. jmeter使用教程
详细使用可参考 官网文档
教程 : http://www.jmeter.com.cn/2747.html
4. windows版本使用
1. 解压安装配置
下载压缩包: apache-jmeter-5.4.zip 解压到任一文件夹. 使用需要本地配置好JDK环境.此处不做详细介绍.
打开解压文件夹:
双击执行bin目录下 jmeter.bat 启动jmeter.
运行成功:
2. 安装插件
将jar包 jmeter-plugins-manager-1.6.jar 复制到jmeter解压目录 apache-jmeter-5.4\lib\ext下 重启jmeter
-
重启后看见右上角有该图标,证明插件下载工具安装成功
-
开发插件下载 perfmon
下载完成后重启
3. 新建线程组 及相关组件
1. 线程组
主要修改 线程属性 下配置
线程数:请求数
Ramp-Up(秒) : 多长时间内启动完线程.
循环次数: 循环发送线程的次数
2. 聚合报告
各列表项说明:
点这里
3. Tcp sampler(Tcp取样器)
TcpClIent calssname : org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl
IP端口 填需测试的地址
4. jp@gc - PerfMon Metrics Collector
服务器资源监控
主要监控以下四项:
CPU : user
Memory : used
Disks I/O : writes
-
Netmork I/O : bytesrecv
效果如下:
二. 其他相关软件安装(windous)
1. Grafana
1.简介
grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。
grafana最常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。
grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。
2. 教程
详细使用教程可参考官网:https://grafana.com/
教程: https://blog.csdn.net/bbwangj/article/details/81109615
3. 启动
- 下载 grafana-7.3.7.windows-amd64.zip 解压:
cmd执行bin/grafana-server.exe
浏览器访问http://127.0.0.1:3000 , 默认用户和密码均为admin
4. grafana 添加相关仪表盘模板
在grafana官网https://grafana.com/grafana/dashboards搜索相关仪表盘ID
点进去 获取该仪表盘ID标识
在本地grafana上 加载该ID 仪表盘(其他类似)
截取其中一个仪表盘做展示:
2. Prometheus
1.简介
Prometheus 是一个开源的服务监控系统和时间序列数据库。
为grafana提供仪表盘数据
2.系统架构图
3.下载
访问官网https://prometheus.io 下载相关平台版本
4.教程
详细教程见官网用户手册https://prometheus.io/docs/prometheus/latest/getting_started/
教程:https://zhuanlan.zhihu.com/p/101184971
5.安装启动
1.下载windous压缩包 prometheus-2.24.0.zip ,解压 如下:
2.配置文件范例
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090'] //服务启动
labels:
instance: prometheus
- job_name: 'mysql' //mysql服务监控点 数据来源于 mysql-exporter
static_configs:
- targets: ['100.0.0.xxx:9104']
labels:
instance: mydb
- job_name: 'mysql_xx'
static_configs:
- targets: ['100.0.0.xxx:9104']
labels:
instance: mydb_xx
- job_name: 'linux' //linux服务监控点 数据来源于 node-exporter
static_configs:
- targets: ['100.0.0.xxx:9100']
labels:
instance: server
- job_name: 'linux_xx'
static_configs:
- targets: ['100.0.0.xxx:9100']
labels:
instance: server_xx
- job_name: 'linux_xx虚拟机'
static_configs:
- targets: ['100.0.0.xxx:9100']
labels:
instance: server_xx
- job_name: 'windous' //windous服务监控点 数据来源于 windous-exporter
static_configs:
- targets: ['100.0.0.xxx:9182']
labels:
instance: server_windous
- job_name: 'redis' //redis服务监控点 数据来源于 redis-exporter
static_configs:
- targets: ['100.0.0.xxx:9121']
labels:
instance: redis
- job_name: 'redis_xx'
static_configs:
- targets: ['100.0.0.xxx:9121']
labels:
instance: redis_xx
cmd 运行 prometheus.exe
三. Linux上软件安装
1. Jmeter ServerAgent
安装于 linux 用于为 jp@gc-PerfMon Metrics Collector 提供数据. 默认端口 4444
教程:https://www.cnblogs.com/xioawu-blog/p/11171301.html
-
下载
下载地址https://github.com/undera/perfmon-agent
-
服务端安装启动
解压
进入解压目录启动
nohup ./startAgent.sh >> nohup.out 2>&1 &
2.redis-exporter
-
下载
GitHubhttps://github.com/oliver006/redis_exporter/releases/tag/v1.16.0
-
教程
https://www.cnblogs.com/wgx519/p/13951439.html
3.node-exporter
-
下载
GitHubhttps://github.com/prometheus/node_exporter/releases/tag/v1.0.1
-
教程
https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_58_prometheus_node_install.html
4.mysql-exporter
-
下载
GitHubhttps://github.com/prometheus/mysqld_exporter/releases/tag/v0.12.1
-
教程
https://blog.51cto.com/viphyy/2446544
四. 记录监控结果
数据采集子系统接口服务器性能指标:
Mysql/Redis数据库服务器性能指标
Redis性能指标
Mysql性能指标
数据采集子系统接口性能指标