Solaris环境下性能采集脚本D

#--------------------------------------
#get netif from command line and save it to cpuid.cfg
#--------------------------------------
get_netif()
{
    #delete netif.cfg
    if [ -f ./netif.cfg ]
    then
        rm ./netif.cfg
    fi
   
    #Input from command line
    while [ -n "$1" ]; do
    case $1 in
       -*) break;; # no more netif input
       *) echo $1 >> ./netif.cfg; shift 1;;
    esac
    done
   
    #If not input parameter, collect all netif
    if [ ! -f ./netif.cfg ]
    then
        netstat -i |/usr/xpg4/bin/grep -vE 'loopback|Name' | awk '{print $1}' > ./netif.cfg
    fi

    #get netstat for each netinterface
        while read NETIF
        do
            if [ ! "$NETIF" = "" ]
            then
                debug "add netif: $NETIF"
                echo "collectMan start to get data from : `date '+%m/%d/%y-%H:%M:%S'`" > ./report/temp_netstat_$NETIF.txt
                nohup netstat -i $collect_if -I $NETIF $COLLECT_PERIOD >> ./report/temp_netstat_$NETIF.txt &
            fi
        done < ./netif.cfg

}

#--------------------------------------
#Add a backgroud process to monitor for each daemon
#--------------------------------------
add_process_monitor()
{
    if [ -f ./process.cfg ]
    then
        rm ./process.cfg
    fi
   
    while [ -n "$1" ]  #loop for all daemon name input from command line
    do
       
        case $1 in
           -*) return 0;;
           *) debug "daemon name: $1 ";;
        esac

        if [ `ps -ef |grep $1|/usr/xpg4/bin/grep -cvE 'grep|collectMan'` -eq 0 ]   #check if daemon is running
        then
              echo "Process '$1' dose not running." | tee -a collectMan.log
              if [ $COLLECT_NOTRUNNING_DAEMON = "N" ]
              then
                  echo "Can't collect this process, if daemon will startup later and you want collect this information, please set COLLECT_NOTRUNNING_DAEMON to Y."
                  shift 1
                  continue
              fi
        else
              echo "Start to collect '$1' daemon information ..." >> collectMan.log
             
        fi
       
        #Add a backgroud collectMan process for monitor daemon information   
        nohup sh ./collectMan.sh -process_monitor $1 > /dev/null &
        echo $1 >> ./process.cfg;
        shift 1
    done
}

#--------------------------------------
#Add a backgroud process to monitor for server information
#--------------------------------------
add_server_monitor()
{
    if [ $COLLECT_CPU = "N" -o COLLECT_MEMORY = "N" -o COLLECT_IO = "N" -o COLLECT_NET = "N" ]
    then
        echo "If you want get summary report, please use -cpu -diskio -memory -net at same time to collect necessary data." | tee -a collectMan.log
        return 0
    else
        nohup sh ./collectMan.sh -server_summary_report > /dev/null &
    fi
}

#--------------------------------------
#Loop to get process information
#--------------------------------------
process_monitor()
{
    while [ 1 ]
    do
        #check parameter
        if [ $# -ne 1 ]
        then
          echo "Parameter not accord the assert."
          exit 0 
        fi
       
        #Create file and input report head     
        if [ ! -f ./report/PS_$1.txt ]
        then
            echo "DATETIME\tSIZE\tRSS\tCPU\tTIME\tNLWP\tPID" > ./report/PS_$1.txt
        fi
       
        #use prstat get process information
        echo "`prstat -n 200 1 1 |grep $1` `date '+%m/%d/%y-%H:%M:%S'`" |awk '{printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",$11,$3,$4,$9,$8,$10,$1}' >> ./report/PS_$1.txt
       
        #zip and separate file
        zipfile ./report/PS_$1.txt

        #wait for next period
        sleep $COLLECT_PERIOD          
    done
}

猜你喜欢

转载自customer.iteye.com/blog/658163