当前位置: 首页 > news >正文

JMeter 性能压测监控实战

前言

在性能压测领域,很多测试人员往往会陷入一个误区:只盯着 JMeter 的 TPS 和响应时间,却忽略了服务器本身的健康状况。真实的生产故障往往是这样发生的:

压测数据显示 TPS 仍然平稳,但服务器 CPU 早已飙升至 100%,内存被不断挤压,磁盘 I/O 严重阻塞。直到系统突然崩溃,才后知后觉地发现——原来瓶颈不在代码逻辑,而在硬件资源已经耗尽。

这就是为什么我们需要在压测的同时,建立一套实时、精准的服务器资源监控体系

本文将从零开始搭建一套完整的性能监控系统,涵盖以下四个核心阶段:

阶段核心内容解决的问题
第一阶段Node Exporter 部署让服务器硬件指标“可被读取”
第二阶段Prometheus 搭建建立监控数据的“存储中心”
第三阶段Grafana 部署与汉化打造可视化的“监控大屏”
第四阶段数据联动与看板导入实现“一键拥有专业监控墙”

第一阶段:基于 Node Exporter 实现被测服务器资源监控

在性能压测中,仅有 JMeter 的 TPS 数据是不够的。我们需要实时监控被测服务器(尤其是 8 核 Xeon/64G 内存这种高性能机器)的 CPU、内存、磁盘等硬件指标,以判断系统的瓶颈。


1. 核心架构原理

Node Exporter是 Prometheus 生态中负责收集类 Unix 系统硬件指标的“发报机”。它将复杂的内核数据转化为标准化的 HTTP 文本流,供监控中心拉取。


2. 环境准备

  • 被测机器:CentOS/Ubuntu (x86_64)
  • 网络要求:确保防火墙放行9100端口。
  • 下载工具:被测服务器无法访问外网的情况下,需要本地下载后通过scp传输至内网环境。

3. 详细安装与部署步骤

第一步:获取安装包

在本地终端执行(适用于 Mac/Linux):

# 使用 curl 下载(适配 Apple M 系列芯片及 Intel)curl-L-Ohttps://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz

第二步:上传至服务器并解压

# 传输至内网服务器scpnode_exporter-1.7.0.linux-amd64.tar.gz root@172.24.7.50:/tmp/# 登录服务器并解压tar-xvf/tmp/node_exporter-1.7.0.linux-amd64.tar.gzcdnode_exporter-1.7.0.linux-amd64

第三步:轻量化后台启动

为了满足压测时临时监控、且不因关闭终端而中断的需求,使用nohup模式运行:

# 启动服务并将日志重定向nohup./node_exporter>node_exporter.log2>&1&

第四步:安全加固(防火墙放行)

curl无法连接,需针对 9100 端口进行策略开放:

# 以 firewalld 为例firewall-cmd--permanent--add-port=9100/tcp firewall-cmd--reload

4. 连通性验证

在监控机(计划运行 Prometheus 的机器)终端通过curl命令验证。若看到以# HELP# TYPE开头的监控数据,则说明部署成功。

curlhttp://172.24.7.50:9100/metrics

5. 运维管理建议

  • 查看状态ss -ntlp | grep 9100ps -ef | grep node_exporter
  • 停止服务:压测结束后,执行pkill node_exporter释放资源。

这是为你优化后的博客第二部分内容。我强化了架构的灵活性说明,并将表格调整为你要求的格式,同时保持了针对 MacOS M2 芯片的详细实操指南。


第二阶段:监控中心搭建(Prometheus 部署篇)

在性能监控体系中,最核心的一步就是建立“监控中心”。很多同学在配置时容易混淆,本质是因为没有理清不同机器之间的角色分工。

1. 核心术语与角色定义

在标准的监控架构中,通常涉及以下三类角色。理解这些角色,能帮你轻松应对从“个人单机”到“企业集群”的配置演进。

角色名称核心职责备注
被测机器 (Target Host)运行待测业务代码的服务器,是我们要观察的受压对象。需安装数据“发报机”(如 Node Exporter)。
监控机器 (Monitoring Host)运行 Prometheus 和 Grafana,负责收集、存储和展示指标。可以是一台或多台。大型环境常将存储与展示拆分部署。
压测机器 (Load Generator)运行 JMeter 发起并发请求,负责产生压力。需确保与监控机网络互通,以便上传压测业务指标。

进阶思考:监控机并不一定是单一的。在大型架构中,你可以用一台性能强劲的服务器专门跑 Prometheus(侧重 IO 存储),用另一台云主机跑 Grafana(侧重 Web 访问),实现职责分离。


2. 在 MacOS (M2 芯片) 上安装 Prometheus

Prometheus 是整个系统的“大脑”,负责定时从被测服务器拉取数据。针对 Apple Silicon 芯片,我们需要特定的安装步骤。

步骤 A:下载 M2 专属架构包

由于 MacBook M2 是 ARM 架构,必须下载对应的darwin-arm64版本。

  1. 访问 Prometheus 官网 或直接使用命令行:
# 下载 M2 专用版本curl-L-Ohttps://github.com/prometheus/prometheus/releases/download/v2.51.1/prometheus-2.51.1.darwin-arm64.tar.gz
  1. 解压并进入目录:
tar-xvfprometheus-2.51.1.darwin-arm64.tar.gzcdprometheus-2.51.1.darwin-arm64

步骤 B:配置监控任务(抓取远程数据)

Prometheus 默认只监控自己。我们需要修改prometheus.yml,把之前在远程 Linux 服务器上启动的 Node Exporter 加进去。

使用编辑器打开prometheus.yml,修改scrape_configs部分(注意:YAML 缩进必须严格使用空格):

scrape_configs:-job_name:"prometheus"static_configs:-targets:["localhost:9090"]# 新增:被测服务器监控任务-job_name:"server_monitor"static_configs:-targets:["被测服务器IP:9100"]# 替换为你的被测服务器内网 IP

步骤 C:实现后台持久化启动

在 MacBook 上,为了避免关闭终端窗口导致监控停止,我们使用nohup模式让它在后台静默运行:

nohup./prometheus--config.file=prometheus.yml>prometheus.log2>&1&

3. 连通性校验

启动完成后,我们无需进入服务器,直接在浏览器操作即可:

  1. 访问:http://localhost:9090
  2. 导航:点击顶部菜单Status -> Targets
  3. 检查:查看server_monitor这一行的状态。
  • UP:代表监控机已跨越内网,成功抓取到了被测服务器的数据。
  • DOWN:请检查被测服务器的 9100 端口防火墙是否已放开。

4. 部署说明

虽然我们在本文中将 Prometheus 和 Grafana 都部署在个人电脑上,但要记住:它们是解耦的

  • Prometheus 是数据库:它通过 Pull 模式获取数据。
  • Grafana 是分析外壳:它通过 HTTP 协议查询 Prometheus。

只要网络互通,你可以把它们安置在任何地方。在个人压测场景下放在一起是为了简化网络配置;在生产场景下分开是为了保障系统的高可用性。


第三阶段:监控中心搭建(Grafana 可视化篇)

有了 Prometheus 这个“数据库”后,我们需要一个强大的“显示器”来呈现数据。Grafana 就是目前工业界最流行的监控看板工具。

1. 为什么选择手动二进制部署?

虽然在 MacOS 上使用brew install很方便,但在M2 芯片旧版本系统(如 macOS 13)中,brew往往会强行安装数 GB 的开发依赖(如 Go、Python),甚至因为补丁不匹配导致报错。

手动部署的优势:

  • 零污染:解压即用,不修改系统环境变量,不安装多余依赖。
  • 轻量化:仅需约 200MB 空间,而brew模式可能占用 1.5GB 以上。
  • 易管理:所有配置都在文件夹内,备份或迁移只需一键打包。

2. Grafana 安装实操(MacOS M2 版)

步骤 A:下载与解压

在终端中进入你的监控工作目录(如~/monitor),执行以下命令:

# 下载 M2 架构专用的官方二进制包curl-Ohttps://dl.grafana.com/enterprise/release/grafana-enterprise-10.4.2.darwin-arm64.tar.gz# 解压并进入目录tar-zxvfgrafana-enterprise-10.4.2.darwin-arm64.tar.gzmvgrafana-v10.4.2 grafana_servercdgrafana_server

步骤 B:后台启动服务

为了保证关闭终端后监控依然运行,我们使用nohup模式:

nohup./bin/grafana-server web>grafana.log2>&1&

启动后,访问http://localhost:3000即可看到登录界面(初始账号密码均为admin)。


3. 深度优化:开启中文支持

Grafana 官方已内置中文包,只需两步即可完成汉化:

  1. 个人偏好设置:登录后点击左下角User (头像) -> Profile,在Language中选择Chinese (Simplified)并保存。
  2. 全局默认配置(可选):修改conf/defaults.ini文件中的default_language = zh-Hans

第四阶段:数据联动与可视化(Grafana 实战篇)

如果说 Prometheus 是我们的“监控数据库”,那么 Grafana 就是这套体系的“门面”。在这一模块中,我们将打通数据链路,并将原本晦涩难懂的原始数据转化为直观、炫酷的实时仪表盘。

1. 打通数据链路

Grafana 本身不存储数据,它需要通过“数据源(Data Source)”与第二部分部署的 Prometheus 进行对接。

配置步骤操作要点备注
添加数据源连接 (Connections) -> 数据源 (Data Sources)选择Prometheus作为数据类型
服务地址URL 栏输入http://localhost:9090指向本地运行的 Prometheus 数据库
保存测试点击底部的Save & Test看到绿色成功提示即代表“管道”已打通

在本地部署环境下,除了 URL 外,其他复杂的认证(Auth)和参数设置均保持默认即可,切勿画蛇添足。


2. 一键导入专业看板


为了省去手动绘制图表(编写 PromQL 语句)的繁琐过程,我们直接利用 Grafana 官方社区的“大神级”模板。

  • 操作路径:点击左侧菜单仪表盘 (Dashboards)->新建 (New)->导入 (Import)
  • 输入 ID:在Import via grafana.com框中输入1860,然后点击Load (加载)

为什么是 1860?

1860是 Grafana 社区公认最强大的 Linux 服务器监控模板(Node Exporter Full)。填入它,就相当于瞬间克隆了一套包含 CPU、内存、网络、磁盘等 20 多个维度的专业监控墙,避免了从零开始设计的痛苦。


3. 指定数据源

在点击导入(Import)前的最后一个配置页面,最关键的动作是:

  • 在页面底部的Prometheus 下拉框里,选中你刚刚命名的那个数据源(例如Prometheus-JMeter)。
  • 点击Import即可

4. 阶段总结:监控墙已上线

至此,你已经拥有了一套功能完备的服务器硬件监控系统

  1. 数据采集:远程 Linux 端的 Node Exporter 在采集指标。
  2. 数据存储:本地 Prometheus 正在抓取并保存数据。
  3. 数据展示:Grafana 1860 面板正在实时渲染监控曲线。

目前我们看到的是“服务器抗不抗得住”,但这还不是全部。作为一个性能测试工程师,我们更关心接口的 TPS、平均响应时间等业务指标。


总结

通过本系列四个阶段的操作,可以从零到一搭建起一套性能监控体系。

能力维度具体成果
数据采集层在被测服务器上成功部署 Node Exporter,实时采集 CPU、内存、磁盘、网络等硬件指标
数据存储层搭建 Prometheus 监控中心,实现定时拉取与持久化存储,数据不因终端关闭而丢失
数据展示层部署 Grafana 可视化平台,导入模板(ID: 1860),一键拥有专业级监控看板

这套体系能给你带来什么?

1. 压测时:实时发现瓶颈

  • 当 TPS 突降时,第一时间查看 CPU/内存曲线,判断是硬件饱和还是代码问题
  • 当响应时间变长时,结合磁盘 I/O 和网络流量,定位是数据库慢查询还是带宽不足

2. 压测后:精准复盘分析

  • Prometheus 存储了完整的时间序列数据,可以回溯任意时间点的服务器状态
  • 对比多轮压测的监控曲线,量化每一次代码优化的实际效果

3. 日常运维:提前预警风险

  • 这套体系不仅服务于压测,还可以长期运行,监控生产环境的健康状态
  • 结合 Grafana 的告警功能(后续可扩展),在资源即将耗尽前收到通知

下一步你可以做什么?

扩展方向建议动作
业务指标监控将 JMeter 的 TPS、响应时间等数据通过 Prometheus 客户端库推送到同一监控体系,实现“硬件+业务”同屏展示
告警机制在 Grafana 中配置告警规则(如 CPU > 80% 持续 5 分钟),通过钉钉、邮件或企业微信接收通知
多台服务器监控在 Prometheus 的prometheus.yml中添加更多targets,实现集群级别的统一监控
长期数据存储将 Prometheus 对接 Thanos 或 VictoriaMetrics,实现监控数据的长期保存与多集群聚合
http://www.rkmt.cn/news/1510051.html

相关文章:

  • 告别语言障碍:用XUnity Auto Translator轻松玩转全球Unity游戏
  • 匹兹堡大学:虚拟免疫学
  • 惊人!约30% Polymarket交易量来自美国,2030年美用户交易量或达1330亿美元
  • Prometheus 告警路由与通知管理:从告警风暴到精准触达,通知的最后一公里
  • 观察者模式与相关模式的对比
  • 北京黄金铂金K金钻石回收哪家靠谱?五家正规门店实力对比与避坑指南 - 资讯速览
  • 大语言模型提示压缩技术:块状因果掩码原理与实践
  • 2026年上海网约车租赁市场深度横评:合规双证与新能源化选购指南 - 优质企业观察收录
  • 渐进分析与拉普拉斯-贝尔特拉米算子在多视图数据中的应用
  • 闲置黄金怎么卖最划算 2026深圳正规回收店推荐 - 余生黄金回收
  • 基于大模型的运维 SOP 自动生成与执行:从经验文档到可执行脚本,运维知识的工程化
  • Verilog仿真调试:别再只会用$display了,$monitor、$strobe和$write的区别与实战场景
  • 2026 武汉 5 大青少年矫正学校榜单|专治叛逆网瘾早恋厌学,央视背书机构领跑 - 辛云教育资讯
  • 跨越次元壁:MMD Tools如何让Blender与初音未来完美相遇
  • 出黄金必看!长沙正规回收门店汇总 - 逸程
  • PowerPC 604e微架构解析:超标量、乱序执行与缓存一致性设计
  • 2026青岛迪奥名包回收靠谱商家排名 闲置奢包高价焕新首选 - 名奢变现站
  • 2026杭州LV回收全攻略:行情走势+品牌排行+避坑答疑 - 薛定谔的梨花猫
  • Windows虚拟声卡Scream终极指南:三步实现局域网音频无线传输
  • 开源、网页端、集成式小分子质谱鉴定
  • 2026 防城港厨卫屋面地下室漏水瓷砖空鼓测评:吉修匠 99.8 分五星榜首 - 吉修匠
  • 抖音下载终极指南:免费无水印批量下载完整教程
  • 从LTE到5G:CORESET设计如何解决老网络的‘控制信道之痛’?
  • P87LPC761深度解析:16引脚80C51 MCU的低功耗设计与实战避坑指南
  • 从‘听不清’到‘听得清’:聊聊那些藏在微信语音、Teams会议里的音频3A算法
  • 实测!青岛那些年一起吃串的地方,老牌连锁海鲜烧烤高性价比
  • 客服岗位未来最吃香的能力是智能知识库管理
  • 高效电商自动化实战:深度解析京东抢购框架JDspyder
  • 2026年郑州空压机余热回收选型指南:从能耗黑洞到年省电费20万的实战路线 - 优质企业观察收录
  • Python面试翻车?别怪面试官狠,只怪你没搞懂这3个致命坑