zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    单元测试
    python gdb
    圣诞树
    网络是怎样连接的 读书笔记
    POJ2104 K-th Number(整体二分)
    [SDOI2011]消耗战
    [HNOI2011]XOR和路径
    [HNOI2013]游走
    [JSOI2008]球形空间产生器
    POJ2728 Desert King
  • 原文地址:https://www.cnblogs.com/hushaojun/p/5651570.html
Copyright © 2011-2022 走看看