zoukankan      html  css  js  c++  java
  • LoadRunner监控Linux的三种方法

    方法一、LR + SiteScope/nmon
    
     
    
    方法二、使用rstatd包
    
    1、下载rpc.rstatd-4.0.1.tar.gz
    
    2、解压缩
    
    tar -zxvf rpc.rstatd-4.0.1.tar.gz
    
    3、配置
    
    ./configure
    
    4、编译
    
    make
    
    5、安装
    
    make install
    
    6、启动
    
    rpc.rstatd
    
    7、在LoadRunner中添加计数器
    
    
    
     
    
    
    
        average load :在过去的1分钟,的平均负载
    
        cpu utilization: cpu的使用率
    
        disk traffic: disk传输率
    
        paging rate: 每秒从磁盘读到物理内存,或者从物理内存写到页面文件的内存页数
    
        Swap-in rate: 每秒交换到内存的进程数
    
        Swap-out rate: 每秒从内存交换出来的进程
    
    
    
    
    
    8、将服务设置为自动启动(Linux启动时自动启动这些服务):
    
        vi /etc/rc.d/rc.local
    
      如:
    
        #rpc.rstatd--绝对路径
    
        /usr/local/sbin/rpc.rstatd
    
    
    
     
    
    方法3、使用Shell脚本
    
    
    
    使用Shell脚本收集Linux资源写入csv文件,再通过LR的Analysis导入csv文件(Tools - Extenal Monitors - Import Data... )
    
     
    
    
    Shell脚本如下所示:
    
    #!/bin/bash
    # (C) 2006 Mark Boddington, http://www.badpenguin.co.uk
    # Licensed under the GNU GPL Version 2.
    
    # ***** Version 0.2 *****
    # TODO -- Create CSV parsing rules for the netstat.
    
    # *****  Configuration *****
    # set LOG to the directory you want to write the performance data to.
    # set SLEEP to the number of seconds you want to sleep between samples
    # set HDD to the number of had disks in your machine.
    
    LOG=/home/mark/PerfMon/LIVE
    SLEEP=10
    HDD=2
    
    HTYPE=$(uname -s)
    
    genStat()
    {
     now=$( date +%S )
     while [ "$now" -ne "30" ]
     do
      sleep 1
      now=$( date +%S )
     done
     while :;
     do
      dat=$(date +%Y%m%d,%H:%M:%S)
      day=$(date +%Y%m%d )
      iostat -x 1 2 |  sed -e"s/^/(.*/)/$dat /1/" | grep "[0-9]/." | tail -${HDD} >> ${LOG}/io.${day}.log &
      vmstat 1 2 | awk "{ print /"$dat/", /$0 }" | tail -1 >> ${LOG}/vm.${day}.log &
      netstat -i | grep -v Iface | awk "{ print /"$dat/", /$0 }" >> ${LOG}/netstat.${day}.log &
      uptime >> ${LOG}/uptime.${day}.log &
      sleep $SLEEP
     done
    }
    
    mkcsv()
    {
     dat=$1
    
     if [ "$HTYPE" == "SunOS" ]
     then
     
      #IO CSV
      echo date,time,device,r/s,w/s,kr/s,kw/s,wait,actv,wsvc_t,asvc_t,%w,%b > ${LOG}/io.${dat}.csv
      cat ${LOG}/io.${dat}.log | egrep -v "extended|device" | awk '{ OFS=","; print $1,$12,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11 }' >> ${LOG}/io.${dat}.csv
      #VM csv
      echo date,time,k[r],k[b],k[w],swap,free,pg[re],pg[mf],pg[pi],pg[po],pg[fr],pg[de],pg[sr],m0,m1,m2,m1,interupt,syscall,ctxswt,cpu[us],cpu[sys],cpu[idl] > ${LOG}/vm.${dat}.csv
      cat ${LOG}/vm.${dat}.log | awk '{for(l=1;l<23;l++) { printf("%s,", $l) }; print $23 }' >> ${LOG}/vm.${dat}.csv
      #uptime csv
      echo time,users,5min,10min,15min > ${LOG}/uptime.${dat}.csv
      cat ${LOG}/uptime.${dat}.log | awk '{ OFS=","; if ( $6 ~ /^[hm][ri]/) { print $1,$7,$11$12$13 } else if ( $6 ~/^user/) { print $1,$5,$9$10$11} else { print $1,$6,$10$11$12} }' >> ${LOG}/uptime.${dat}.csv
    
     elif [ "$HTYPE" == "Linux" ]
     then
      #IO CSV
      echo "date,time,device,rrqm/s,wrqm/s,r/s,w/s,rsec/s,wsec/s,rkB/s,wkB/s,avgrq-sz,avgqu-sz,await,svctm,%util" > ${LOG}/io.${dat}.csv
      cat ${LOG}/io.${dat}.log | egrep -v "extended|device" | awk '{for(l=1;l<15;l++) { printf("%s,", $l) }; print $15}' >> ${LOG}/io.${dat}.csv
      #VM csv
      echo date,time,r,b,swp,free,buff,cache,si,so,bi,bo,in,cs,us,sy,id,wa > ${LOG}/vm.${dat}.csv
      cat ${LOG}/vm.${dat}.log | awk '{for(l=1;l<17;l++) { printf("%s,", $l) }; print $17 }' >> ${LOG}/vm.${dat}.csv
      #uptime csv
      echo time,users,5min,10min,15min > ${LOG}/uptime.${dat}.csv
      cat ${LOG}/uptime.${dat}.log | awk '{ OFS=","; if ( $4 ~ /^min/) { print $1,$5,$9$10$11 } else { print $1,$4,$8$9$10} }' >> ${LOG}/uptime.${dat}.csv
     else
    
      echo "Hmmm - An unexpected error occured. Have you change the host type?"
     
     fi
    
    }
    
    if [ "$HTYPE" != "SunOS" -a "$HTYPE" != "Linux" ] 
    then
     echo "Error - This script has no knowlege of the System $HTYPE"
     echo "        You will need to do some tweaking."
     exit
    fi
    
    case $1 in 
    
     run)
      genStat
      ;;
     csv)
      if [ $# -lt 2 ]
      then
       echo "Error - You must supply a date in the form YYYYMMDD"
       exit
      fi
      mkcsv $2
      ;;
     *)
      echo -e ":::: Usage ::::"
      echo -e "$0 run             : Collect stats"
      echo -e "$0 csv YYYYMMDD    : Generate CSV from stats"
      echo ""
      ;;
    esac
    
  • 相关阅读:
    Oracle如何查询不等于某数值
    《Linux系列》- 查看Linux日志
    《数据库优化》- MySQL视图
    《数据库优化》- MySQL优化
    《面试经典系列》- MySQL数据库存储引擎
    《面试经典系列》- Java获取反射机制的三种方法
    《面试经典系列》- 从底层理解==和equals的区别
    《面试经典系列》- 乐观锁和悲观锁及其应用场景
    数据结构之HashMap
    收藏学习地址
  • 原文地址:https://www.cnblogs.com/qmfsun/p/4575451.html
Copyright © 2011-2022 走看看