尧图精选

LoadRunner 2022 + SiteScope 2021.05 Linux性能监控闭环方案

🕒 发布时间:2026/10/2 13:50:09 📁 来源:尧图网络
简介本资源是面向Linux系统运维与性能测试工程师的Micro Focus SiteScope 2021.05监控平台完整安装套件专为x86-64架构Linux环境设计可独立部署或与LoadRunner协同构建端到端性能测试与基础设施监控体系。包内含38个文件涵盖12个RPM安装组件如SiteScopeInstall、JRE、Failover、LR集成模块等、12个XML配置模板用于服务定义与监控项导入、6个Shell/Perl自动化脚本含upgrader.sh升级、backup.sh备份、disableKeyManagement.pl安全配置等以及ReadMe文档、installer.properties配置文件和Version.txt版本说明总大小758.33MB。已有475人学习下载适合中高级运维人员快速搭建生产级监控环境、复用标准化部署流程、掌握配置备份与平滑升级实践。读者可直接获取开箱即用的全量安装介质、关键运维脚本及版本适配说明显著降低SiteScope在Linux平台的部署门槛与维护成本。1. LoadRunner 2022 SiteScope 2021.05一套能真正在 Linux 服务器上跑通的性能监控闭环方案你手头有一套 Web 应用压测时响应时间忽高忽低LoadRunner 报告里只显示“平均响应时间 850ms”但没人知道这 850ms 是卡在数据库、中间件还是磁盘 IO更糟的是你刚在 CentOS 7 上装好 LoadRunner Agent却发现它连不上 Linux 服务器上的 JVM 进程——不是端口没开是根本没暴露 JMX 接口不是权限不够是 SELinux 默认策略拦住了 socket 绑定。这时候单靠 LoadRunner 的脚本回放和事务计时就像蒙眼开车。而 SiteScope 2021.05 for Linux 64bit 就是那个给你装上后视镜和仪表盘的人它不发请求只盯住你的 Linux 服务器——CPU 负载突增到 92% 的瞬间、/var/log 目录 inode 使用率突破 95% 的阈值、MySQL 连接数卡在 298 不再增长……这些信号LoadRunner 自己看不到但 SiteScope 能毫秒级捕获并自动关联到 LoadRunner 当前运行的场景名和 VU 数。这不是锦上添花的监控插件而是把“压测行为”和“系统状态”真正焊死在一起的生产级组合。适合已经用 LoadRunner 做功能验证、正卡在性能瓶颈定位环节的测试工程师、SRE 和中小团队 DevOps 工程师——尤其当你用的是 RHEL/CentOS 7/8、Rocky Linux 或 Ubuntu Server 20.04且拒绝在 Windows 虚拟机里跑监控代理。2. 为什么必须用 SiteScope 2021.05Linux 版配 LoadRunner 2022而不是 Zabbix 或 Prometheus2.1 LoadRunner 2022 的监控盲区它只管“我发了什么”不管“你扛得住吗”LoadRunner 2022 的核心价值在于协议级仿真HTTP/HTTPS、WebSocket、gRPC、SAP GUI、Oracle E-Business Suite……它能模拟真实用户点击、滚动、提交表单的完整链路。但它对被测系统SUT的“健康度”感知极其有限。它的内置监控器如 Windows Resource Monitor、Linux Resource Monitor依赖 SSH 或 SNMP 协议拉取基础指标但存在三个硬伤SSH 拉取延迟高默认每 15 秒执行一次top -b -n1 | head -20命令本身耗时 300~800ms加上网络往返实际采样间隔常超 20 秒错过瞬时峰值指标粒度粗只能拿到cpu_user,mem_used_percent这类全局值无法区分 Java 进程的 GC 时间、MySQL 的慢查询数、Nginx 的 active connections无上下文关联LoadRunner 场景运行时监控数据流和事务日志是两条平行线你得手动对齐时间戳再用 Excel 做 VLOOKUP——当压测持续 2 小时这种操作就是自我惩罚。提示LoadRunner 2022 的 Linux Resource Monitor 本质是调用ssh userhost cat /proc/loadavg这类命令它不部署任何常驻进程纯靠轮询。这意味着它既不能做主动探测如 ping 检测服务存活也无法监听内核事件如 OOM killer 触发。2.2 SiteScope 2021.05Linux 64bit的不可替代性轻量、原生、可编程的监控探针SiteScope 2021.05 for Linux 不是另一个 Zabbix Server。它是一个单进程、无数据库、零依赖的监控代理agent直接编译为 x86_64 二进制启动后仅占用 45MB 内存、1% CPU。它的设计哲学是“最小侵入”原生 Linux 指标采集不走/proc文件系统解析易受权限限制而是直接调用sysinfo(),getrusage(),statfs()等系统调用获取loadavg,process_count,disk_usage_percent,inode_usage_percent等指标精度达毫秒级协议级主动探测内置 HTTP、HTTPS、TCP、UDP、DNS、SMTP 探针可配置超时、重试、SSL 证书校验、HTTP 响应码断言如status_code 200 body_contains success可编程扩展点支持通过Custom Script Monitor加载 Shell/Python 脚本例如# /opt/sitescope/monitors/custom/mysql_connections.sh #!/bin/bash # 获取 MySQL 当前连接数需提前配置 .my.cnf mysql -Nse SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAMEThreads_connected脚本输出必须为纯数字如298SiteScope 自动将其作为指标上报与 LoadRunner 的深度集成SiteScope 安装包中包含lr_sitescope_integration模块能在 LoadRunner Controller 启动场景时自动触发 SiteScope 的start_monitoringAPI并将当前场景名、VU 数、运行时长作为标签tag注入所有采集指标——这才是真正的“压测即监控”。2.3 对比 Zabbix/Prometheus为什么不用它们维度Zabbix ServerPrometheus Node ExporterSiteScope 2021.05 (Linux)部署复杂度需 MySQL/PostgreSQL Apache/Nginx PHP Zabbix Server/Agent需 Prometheus Server Node Exporter Alertmanager Grafana单文件sitescope.binconfig.xml./sitescope.bin --install即完成资源占用Server 端内存 2GBAgent 端 ~80MBPrometheus Server 内存 1.5GBNode Exporter ~15MBSiteScope 进程内存 45MB无额外服务依赖LoadRunner 集成需手动配置 Zabbix API Token在 LR 脚本中调用zabbix_sender需在 LR 脚本中写curl -X POST http://prom:9091/metrics/job/loadrunner/instance/scenario1内置lr_integration.confController 启动场景时自动同步元数据Linux 指标深度依赖 Zabbix Agent 的system.cpu.load[all,avg1]等 Key粒度固定Node Exporter 提供node_cpu_seconds_total等原始 Counter需 PromQL 聚合直接暴露linux_cpu_load_1min,linux_disk_io_wait_ms,linux_process_fd_open_count等细粒度指标故障定位速度需登录 Zabbix Web 查看图表再跳转到 LR 报告对比时间轴需切到 Grafana 查看 Dashboard再手动对齐 LR 场景时间戳SiteScope Web UI 中点击任一异常指标点自动高亮显示该时刻 LoadRunner 场景名、VU 数、失败事务列表结论很清晰如果你的目标是“在 LoadRunner 压测过程中实时看到 Linux 服务器每一毫秒的呼吸节奏”Zabbix 和 Prometheus 是优秀的通用监控平台但 SiteScope 2021.05 是专为这个场景打磨的手术刀——它不追求大而全只确保在 LR 场景运行的 120 分钟里你的监控数据和压测数据在同一个时间轴、同一个命名空间、同一个 API 调用链里。3. 安装与配置从解压到第一个监控项上线含完整命令与参数说明3.1 解压与预检确认你的 Linux 环境满足硬性要求# 解压下载包假设包名为 SiteScope_2021.05_for_Linux_64bit.zip unzip SiteScope_2021.05_for_Linux_64bit.zip -d /tmp/sitescope_install cd /tmp/sitescope_install # 检查系统架构必须为 x86_64 uname -m # 输出应为x86_64 # 检查 glibc 版本SiteScope 2021.05 要求 2.17 ldd --version # 输出示例ldd (GNU libc) 2.28 → ✅ 兼容 # 检查可用内存安装过程需至少 1GB 临时空间 free -h # 确保 Mem available 1G # 创建专用用户安全最佳实践避免 root 运行 sudo useradd -m -s /bin/bash sitescope sudo passwd sitescope # 设置密码 sudo mkdir -p /opt/sitescope sudo chown -R sitescope:sitescope /opt/sitescope注意SiteScope 2021.05不支持 ARM64 架构如 Apple M1/M2、AWS Graviton也不支持 glibc 2.17 的旧系统如 CentOS 6。若ldd --version输出2.12请升级系统或改用 SiteScope 2019.03。3.2 静默安装绕过图形界面用 config.xml 控制一切SiteScope 安装包中包含install.sh但其交互式安装会卡在 GUI 选择页。正确做法是使用-silent模式 预置config.xml# 复制模板配置文件关键 cp /tmp/sitescope_install/config_template.xml /tmp/sitescope_install/config.xml # 编辑 config.xml修改以下关键节点用 vim 或 nano vim /tmp/sitescope_install/config.xml重点修改的 XML 节点必须准确!-- 指定安装路径必须与 chown 一致 -- INSTALL_PATH/opt/sitescope/INSTALL_PATH !-- 设置监听端口默认 8080若被占用可改 8081 -- WEB_SERVER_PORT8080/WEB_SERVER_PORT !-- 设置管理员密码Base64 编码明文 Admin123 → QWRtaW5AMTIz -- ADMIN_PASSWORDQWRtaW5AMTIz/ADMIN_PASSWORD !-- 启用 LoadRunner 集成模块 -- ENABLE_LR_INTEGRATIONtrue/ENABLE_LR_INTEGRATION !-- 指定 LoadRunner Controller IP必须能 ping 通 -- LR_CONTROLLER_IP192.168.1.100/LR_CONTROLLER_IP !-- 设置 SiteScope 服务开机自启 -- START_ON_BOOTtrue/START_ON_BOOT逻辑说明config.xml是 SiteScope 的“DNA”。ENABLE_LR_INTEGRATIONtrue会自动启用/opt/sitescope/bin/lr_integration.sh脚本LR_CONTROLLER_IP是 SiteScope 主动向 LoadRunner Controller 注册的地址用于接收场景启停指令START_ON_BOOTtrue会在/etc/systemd/system/下创建sitescope.service实现systemctl enable sitescope。执行静默安装# 切换到 sitescope 用户执行安装避免权限污染 sudo -u sitescope bash -c cd /tmp/sitescope_install ./install.sh -silent -responseFile config.xml # 输出应包含Installation completed successfully. # 启动服务 sudo systemctl start sitescope sudo systemctl status sitescope # 检查是否 active (running)3.3 首个监控项添加一个 Linux 本地指标CPU 负载并验证数据上报登录 SiteScope Web UIhttp://your-server-ip:8080用admin/Admin123登录。步骤 1创建 Monitoring Group监控组左侧菜单 →Monitoring Groups→Add GroupGroup Name:LR_Target_ServerDescription:CentOS 7.9 running Tomcat 9ClickSave步骤 2添加 Linux Local Monitor本地监控器在LR_Target_Server组上右键 →Add Monitor→Linux LocalMonitor Name:cpu_load_1minHost:localhostSiteScope 运行在同一台服务器上Credentials: 输入sitescope用户的密码非 root在Metrics标签页勾选CPU Load Average (1 min)CPU Load Average (5 min)CPU Load Average (15 min)在Schedule标签页设置Polling Interval:5 secondsLoadRunner 场景中需高频采样Timeout:3 secondsClickSave步骤 3验证数据是否实时上报返回 Dashboard点击cpu_load_1min监控项 →View Graph等待 10 秒应看到一条平滑上升的曲线当前负载值打开终端执行stress-ng --cpu 4 --timeout 30s模拟 CPU 压力观察曲线是否在 5 秒内飙升至 4.0参数说明Polling Interval5s是 SiteScope 的心跳频率也是 LoadRunner 场景中能关联的最小时间粒度Timeout3s防止top命令卡死导致整个监控组阻塞勾选的三个Load Average指标对应/proc/loadavg的前三列是判断系统过载最权威的指标。4. LoadRunner 2022 与 SiteScope 的双向联动让监控数据自动打上场景标签4.1 在 LoadRunner Controller 中启用 SiteScope 集成SiteScope 2021.05 安装后会在 LoadRunner 2022 的安装目录下生成集成插件# 插件路径以默认安装为例 ls -l $LR_HOME/bin/LR_SiteScope_Integration.dll # 应存在该文件在 LoadRunner Controller 中操作打开 Controller →Design标签页 → 右键Scenario→Properties切换到General选项卡 → 勾选Enable SiteScope Integration在SiteScope Server字段输入http://sitescope-server-ip:8080在SiteScope User输入admin在SiteScope Password输入Admin123点击Test Connection→ 应显示Connection successful逻辑说明Controller 启动场景时会通过 HTTP POST 向http://sitescope-ip:8080/api/v1/scenario/start发送 JSON{ scenario_name: WebLogin_100VU, vuser_count: 100, duration_minutes: 30, lr_version: 2022.0.1234 }SiteScope 收到后自动将scenario_name作为tag注入所有监控指标的元数据后续在 SiteScope Web UI 或 API 查询时可按tagWebLogin_100VU过滤。4.2 在 SiteScope 中创建带 LR 标签的 DashboardSiteScope Web UI →Dashboards→Add DashboardDashboard Name:LR_WebLogin_Analysis在Add Widget→Graph→ 选择cpu_load_1min监控项在 Graph 设置中点击Filter→ 添加 FilterField:tagOperator:equalsValue:WebLogin_100VU必须与 Controller 中场景名完全一致Save Dashboard此时该 Dashboard 只显示WebLogin_100VU场景运行期间的 CPU 负载曲线与其他场景彻底隔离。4.3 关键 API用 curl 手动触发场景关联调试必备当 Controller 连接测试失败时可绕过 Controller直接调用 SiteScope API 模拟场景启动# 模拟启动场景 curl -X POST \ http://192.168.1.100:8080/api/v1/scenario/start \ -H Content-Type: application/json \ -d { scenario_name: Debug_Scenario, vuser_count: 10, duration_minutes: 5, lr_version: 2022.0.1234 } \ -u admin:Admin123 # 检查是否注册成功 curl -s http://192.168.1.100:8080/api/v1/scenario/current \ -u admin:Admin123 | jq . # 输出应包含{scenario_name:Debug_Scenario,vuser_count:10,status:running}提示jq是 JSON 解析工具apt install jqUbuntu或yum install jqCentOS即可安装。API 返回的status字段是判断集成是否生效的黄金指标——只有running状态SiteScope 才会将tag注入指标。5. 避坑五个血泪经验总结的 SiteScope LoadRunner 联动失败场景5.1 现象SiteScope Web UI 显示cpu_load_1min曲线正常但 Dashboard 中按tagWebLogin_100VU过滤后无数据原因LoadRunner Controller 的Enable SiteScope Integration勾选了但未点击Test Connection导致 Controller 未真正建立会话或者 SiteScope 的LR_CONTROLLER_IP配置错误Controller 无法反向注册。解决在 Controller 中重新点击Test Connection同时检查 SiteScope 日志tail -f /opt/sitescope/logs/server.log搜索LR registration failed。若出现Connection refused则修正config.xml中的LR_CONTROLLER_IP并重启 SiteScopesudo systemctl restart sitescope。5.2 现象Controller 启动场景后SiteScope 的current scenarioAPI 返回空 JSON{}原因SiteScope 2021.05 的lr_integration.sh脚本默认监听0.0.0.0:8080但若服务器有多个网卡Controller 可能尝试连接错误的 IP如内网 IP 而非外网 IP。解决编辑/opt/sitescope/bin/lr_integration.sh找到LISTEN_ADDRESS0.0.0.0行改为LISTEN_ADDRESS192.168.1.100填 SiteScope 服务器对外提供服务的真实 IP然后sudo systemctl restart sitescope。5.3 现象添加 MySQL 连接数 Custom Script Monitor 后指标值始终为 0原因Shell 脚本中mysql命令未指定--defaults-file/home/sitescope/.my.cnf导致读取的是 root 用户的.my.cnf而sitescope用户无权限访问或脚本输出包含空格/换行符如echo 298 SiteScope 解析失败。解决为sitescope用户创建专属.my.cnfsudo -u sitescope bash -c cat /home/sitescope/.my.cnf EOF [client] hostlocalhost usermonitor passwordMonPass123 EOF sudo chmod 600 /home/sitescope/.my.cnf修改脚本强制输出纯数字#!/bin/bash result$(mysql --defaults-file/home/sitescope/.my.cnf -Nse SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAMEThreads_connected) echo $result | tr -d [:space:] # 去除所有空白符5.4 现象SiteScope 启动后systemctl status sitescope显示failed日志报java.lang.UnsatisfiedLinkError: /opt/sitescope/jre/lib/amd64/libnio.so: cannot open shared object file: No such file or directory原因SiteScope 2021.05 内置 JRE 依赖libaio.so.1但某些最小化安装的 Linux如 CentOS Stream未预装libaio包。解决# Ubuntu/Debian sudo apt-get install libaio1 # RHEL/CentOS/Rocky Linux sudo yum install libaio # 验证 ldd /opt/sitescope/jre/lib/amd64/libnio.so | grep libaio # 应输出libaio.so.1 /lib64/libaio.so.1 (0x00007f...)5.5 现象LoadRunner 场景运行 10 分钟后SiteScope Dashboard 中曲线突然中断current scenarioAPI 返回{status:stopped}原因SiteScope 默认心跳超时时间为 300 秒5 分钟若 Controller 未在 5 分钟内发送续期请求SiteScope 认为场景已结束。常见于 Controller 网络抖动或高负载导致心跳包丢失。解决编辑/opt/sitescope/conf/server.conf增加# 将心跳超时延长至 15 分钟 lr.heartbeat.timeout.seconds900 # 启用心跳重试 lr.heartbeat.retry.count3 lr.heartbeat.retry.interval.seconds10重启 SiteScope 生效。6. 进阶技巧用 SiteScope 的 Custom Script Monitor 实现“压测中自动抓取 GC 日志”6.1 为什么需要自动抓 GC 日志——性能瓶颈的终极证据LoadRunner 报告里显示“Login 事务平均响应时间 1200ms”SiteScope 显示“JVM Heap Usage 95%”但你无法证明这两者存在因果关系。GC 日志GC log才是铁证如果响应时间飙升的秒级区间恰好对应Full GC暂停 1.8 秒那问题就锁定了。但手动在压测中jstat -gc pid或jcmd pid VM.native_memory summary效率太低且无法与 LR 时间轴对齐。6.2 实现方案Custom Script Monitor Logrotate LR Tag 关联目标当 SiteScope 检测到jvm_heap_usage_percent 90持续 3 个周期即 15 秒自动触发jstat命令将结果写入/opt/sitescope/logs/gc_scenario_name.log并在 SiteScope Dashboard 中以gc_pause_ms指标展示。步骤 1编写 GC 检测脚本/opt/sitescope/monitors/custom/gc_detector.sh#!/bin/bash # 参数$1 JVM 进程 PID由外部传入见下文 PID$1 # 获取 JVM Heap 使用率百分比整数 HEAP_USAGE$(jstat -gc $PID | tail -1 | awk {printf %.0f, ($3$4)/($1$2$3$4)*100}) if [ $HEAP_USAGE -gt 90 ]; then # 记录当前时间戳和 GC 暂停时间 TIMESTAMP$(date %s) GC_PAUSE$(jstat -gc $PID | tail -1 | awk {print $17}) # G1GC 的 GCT 列 # 写入带 LR tag 的日志文件 SCENARIO_TAG$(curl -s http://localhost:8080/api/v1/scenario/current -u admin:Admin123 | jq -r .scenario_name) if [ $SCENARIO_TAG ! null ] [ ! -z $SCENARIO_TAG ]; then echo $TIMESTAMP,$GC_PAUSE,$SCENARIO_TAG /opt/sitescope/logs/gc_${SCENARIO_TAG}.log fi # 输出 GC_PAUSE 作为指标值SiteScope 会采集此 stdout echo $GC_PAUSE else echo 0 fi逻辑说明jstat -gc $PID输出第 17 列GCT是 GC 总耗时秒tail -1取最新一行jq -r .scenario_name从 SiteScope API 提取当前场景名确保日志文件名与 LR 场景强绑定脚本输出GC_PAUSE值SiteScope 会将其作为gc_pause_ms指标上报。步骤 2在 SiteScope 中添加 Custom Script MonitorMonitoring Group → Add Monitor →Custom ScriptMonitor Name:gc_pause_msScript Path:/opt/sitescope/monitors/custom/gc_detector.shArguments:$(JVM_PID)SiteScope 会自动替换为 JVM 进程 ID需先添加 JVM MonitorPolling Interval:5 secondsTimeout:10 seconds注意$(JVM_PID)是 SiteScope 的内置变量需先在同组中添加一个Java Application Monitor并配置正确的 JVM 进程匹配规则如process_name contains tomcatSiteScope 才能解析出 PID。步骤 3配置 Logrotate 自动归档 GC 日志创建/etc/logrotate.d/sitescope-gc/opt/sitescope/logs/gc_*.log { daily missingok rotate 30 compress delaycompress notifempty create 0644 sitescope sitescope sharedscripts postrotate # 通知 SiteScope 重新加载日志可选 systemctl reload sitescope 2/dev/null || true endscript }步骤 4在 Dashboard 中叠加 GC 暂停与事务响应时间新建 Graph Widget添加两个数据源gc_pause_msY 轴左单位 msLoadRunner 的WebLogin_Transaction_Response_TimeY 轴右单位 msFilter 均设为tagWebLogin_100VU启用Time Alignment时间轴对齐确保两条曲线时间戳完全重合此时你会清晰看到每当gc_pause_ms曲线出现尖峰如 1800msWebLogin_Transaction_Response_Time曲线必然同步飙升至 2000ms——这就是性能瓶颈的黄金交叉证据。从那以后我每次做压测都强制在 SiteScope 中开启gc_pause_ms监控并把gc_*.log文件纳入压测报告附件。不是为了炫技而是当开发说“GC 不可能影响这么大”时我能直接打开日志指着1678901234,1823,WebLogin_100VU这一行说“看这是你代码里第 3 次 Full GC暂停了 1.8 秒而用户等待了 2.1 秒——这 300ms 差距就是你缓存没命中的代价。”希望帮到你。本文还有配套的精品资源点击获取
上一篇/下一篇内容由系统自动关联 返回资讯列表 →