lr如何监控linux

lr如何监控linux

使用 LR 监控 Linux,需先装 Agent,选对应 OS 版本;通过 SSH/Telnet 等协议连目标机;在控制器建场景,添加服务器及监控指标,如 CPU、内存等,即可实时...

优惠价格:¥ 0.00
当前位置:首页 > Linux > lr如何监控linux
详情介绍
使用 LR 监控 Linux,需先装 Agent,选对应 OS 版本;通过 SSH/Telnet 等协议连目标机;在控制器建场景,添加服务器及 监控指标,如 CPU、内存等,即可实时

在性能测试场景中,通过 LoadRunner (LR)Linux 系统进行实时监控是保障测试有效性的核心环节,以下从原理、工具链、实操步骤、数据关联等维度展开详述,并提供完整解决方案。


核心监控目标与技术路径

监控类别 典型指标 LR关联价值
CPU利用率 us/sy/id/wa百分比、上下文切换次数 定位计算瓶颈、线程竞争
内存使用 RSS/VIRT/SWAP用量、OOM杀手触发次数 发现内存泄漏、页交换异常
磁盘IO IOPS、读写延迟、队列长度、%util 评估存储子系统承载能力
网络收发包 rx/tx速率、错误丢包率、TCP重传次数 验证网络层吞吐量与稳定性
进程级资源消耗 单进程CPU/MEM/FD占用、线程数、打开文件描述符 精准定位高负载业务进程
系统级事件 内核日志(dmesg)、死锁检测、硬件中断分布 捕捉潜在系统级故障

▶ 实施架构图解

[LR控制器] → [监控代理] ↔ [Linux被测机]
          ↓
[数据采集器] → [结果数据库] → [Analysis分析报告]

注:可通过两种方式实现:①直接在被测机部署采集脚本;②通过SSH/API由LR主控端拉取数据。


原生命令行工具集锦

即时状态查看(动态刷新)

命令 功能说明 关键参数解析
top -H -p <pid> 显示指定进程的线程级资源占用 -H启用线程视图,-p指定进程ID
vmstat 1 每秒输出虚拟内存统计 procs列显示创建/销毁进程数
iostat -x 1 扩展磁盘IO统计,含%user/%system/%wait await反映平均等待时间,svctm为服务时间
pidstat -h 按进程统计CPU历史趋势 UID字段可映射至登录用户
netstat -i 网络接口流量统计 关注eth0等网卡的rx/tx bytes

历史数据分析(日志回溯)

命令 适用场景 输出特征
sar -u -f /var/log/sa/saDD 解析每日CPU日志 自动识别时间范围,支持--iface过滤网卡
dstat --output 生成CSV格式报表 便于导入Excel做二次加工
psrecord RedHat系专用进程追踪工具 需配合sysstat包使用

深度诊断工具

工具名称 独特优势 典型用法
perf record 火焰图生成,精确定位热点函数 perf script转换二进制栈迹为可读调用链
eBPF Toolkit 无侵入式内核探针,捕获系统调用耗时 bpftrace提供交互式调试环境
lsof -p <pid> 查看进程打开的文件/网络连接 排查文件句柄未释放导致的资源耗尽

自动化监控方案设计

方案A:Shell脚本+LR Vuser集成

#!/bin/bash
# 监控脚本模板 monitor.sh
INTERVAL=5  # 采样间隔(秒)
DURATION=$((60${VUSER_RUNTIME}))  # 总时长=运行时长
while [ $ELAPSED -lt $DURATION ]; do
    # 采集关键指标
    CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2+$4}')
    MEM=$(free | grep Mem | awk '{print $3/$2100}')
    DISK=$(iostat -c | awk 'NR==4{print $1}')
    # 写入LR支持的.csv格式
    echo "$(date +%T),$CPU,$MEM,$DISK" >> /tmp/metrics.csv
    sleep $INTERVAL
done

集成要点

  1. 将脚本上传至被测机/opt/monitor目录
  2. 在LR Vuser脚本中添加os.system("nohup /opt/monitor/monitor.sh &")
  3. 测试结束后通过lr_upload_data API上传监控文件

方案B:Ansible Playbook批量部署

hosts: all
  tasks:
    name: Install monitoring tools
      apt: name=sysstat state=present update_cache=yes
    name: Start sar collection
      command: sar -o /var/log/sa/myapp.log 1 >/dev/null 2>&1
    name: Deploy custom collector
      template: src=collector.j2 dest=/usr/local/bin/mycollector.sh mode=755

优势:支持跨节点统一配置,适配分布式测试环境。


数据关联与根因分析

三维关联模型

维度 数据源 分析方法 示例上文归纳
时间轴 LR事务响应时间 vs syslog 叠加时间序列找突变点 “14:30出现慢查询,对应DB连接池耗尽”
进程树 pstack + ldd 定位库依赖导致的加载延迟 “libcrypto.so.3缺失引发初始化超时”
资源竞争 strace -f

观察系统调用阻塞情况 “futex()等待导致线程休眠”

可视化技巧

  1. Gnuplot绘图:将metrics.csv转换为图像嵌入LR报告
    set title "CPU vs Response Time"
    plot "response.dat" using 1:2 with lines title "TPS", 
         "cpu.dat" using 1:2 with lines title "CPU%"
  2. Heatmap热力图:用R语言绘制全天资源使用密度图
    library(ggplot2)
    ggplot(data, aes(x=hour, y=metric, fill=value)) + geom_tile() + scale_fill_gradientn(colors=brewer.pal(9,"Reds"))

常见问题解决手册

Q1: 为何无法获取/proc/<pid>/status中的线程信息?

原因:SELinux策略限制或缺少debuginfo包
解决方案

  1. 临时关闭SELinux:setenforce 0
  2. 安装调试符号表:yum install kernel-debuginfo-$(uname -r)
  3. 修改系统配置:echo 0 > /proc/sys/kernel/kptr_restrict

Q2: 如何区分业务压力导致的CPU升高还是后台任务干扰?

诊断步骤

  1. 执行ps aux --sort=-%cpu查看TOP5进程
  2. 使用prlimit限制非关键进程的资源配额
  3. 对比/proc/loadavg中的三个平均值:
    • 短期负载骤升→突发业务请求
    • 中长期负载持续高位→后台批处理任务
  4. 启用auditd审计特定用户组的进程启动行为

进阶优化建议

  1. 预置阈值告警:在/etc/modprobe.d/alert.conf中配置:
    alias net-livedump off
    options snd-hda-intel index=0 bdl=off power_save=0
  2. 容器环境适配:对于Docker环境,需额外监控:
    • docker stats --no-stream获取容器级指标
    • crictl inspect查看runc运行时的状态
  3. 硬件直连监测:通过IPMI工具获取真实的服务器功耗、温度数据,建立能效比模型。

通过上述体系化监控方案,可实现从操作系统底层到应用层的全链路可视,为性能调优提供精确的数据支撑,实际实施时需根据具体测试场景选择工具组合,建议优先采用轻量级方案(如方案A),复杂场景可引入Prometheus+Grafana构建

0