• LoadRunner监控Linux的三种方法


    方法一、LR + SiteScope

    方法二、使用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

    参考:

    http://www.loadrunnertnt.com/tools/local-unix-monitoring-made-possible/

    http://www.badpenguin.co.uk/main/content/view/43/35/

  • 相关阅读:
    Java JMX 监管
    Spring Boot REST(一)核心接口
    JSR 规范目录
    【平衡树】宠物收养所 HNOI 2004
    【树型DP】叶子的颜色 OUROJ 1698
    【匈牙利匹配】无题II HDU2236
    【贪心】Communication System POJ 1018
    【贪心】Moving Tables POJ 1083
    Calling Extraterrestrial Intelligence Again POJ 1411
    【贪心】Allowance POJ 3040
  • 原文地址:https://www.cnblogs.com/hushaojun/p/5651570.html
Copyright © 2020-2023  润新知