MySQL监控脚本

#/bin/bash

# * * * * * sh /tmp/check_kpi_local.sh > /dev/null 2>&1

LOGFILE=/tmp/KPI_$(date +%F).log
CURRENT=$(date "+%T %F")
HOST=`/sbin/ifconfig | grep "inet addr" | awk -F: '{print $2}' | awk {'print $1'} | head -1`


getstat_ioutil()
{
   # Get status of  ioutil.
  local _tmpfile=/tmp/stat_$$.tmp
  local IOSTAT
  local _cnttime=4
  local DISKS

  iostat -x -k 1 $_cnttime > $_tmpfile

  local diskcnt=$(echo $(cat $_tmpfile | wc -l),${_cnttime} | awk -F "," '{total=($1-2)/$2+2}{printf "%d",total}')
  sed -i 1,${diskcnt}'d' $_tmpfile

  MAXAVG=0

  for DISKS in $(grep -e "^sd" -e "^cc" -e "^hd" $_tmpfile | awk '{print $1}' | sort -u)
  do
    MAXAVG_TMP=$(grep "${DISKS} "  $_tmpfile | awk '{ if( $NF != "0.00" ) {total+=$NF;cnt+=1;printf "%f\n", total/cnt}}' | tail -1)
    MAXAVG=$(echo $MAXAVG $MAXAVG_TMP | awk '{if ($2 > $1) {print $2} else {print $1} }' )
  done

  _stat=$MAXAVG
  _var=ioutil
  _result=${_result}${_var}"="${_stat}"&"

  echo $(echo $_result | sed -e 's/\&$//' )

  \rm -f $_tmpfile
  return 0

}

getstat_iorwkb()
{
   # Get status of  io rKB/s wKB/s .
  local _tmpfile=/tmp/stat_$$.tmp
  local IOSTAT
  local _cnttime=4
  local DISKS

  if [ $? -ne 0 ] ;  then
         echo "iostat error "
         exit 1
  fi

  iostat -k 1 $_cnttime > $_tmpfile

  local diskcnt=$(echo $(cat $_tmpfile | wc -l),${_cnttime} | awk -F "," '{total=($1-2)/$2+2}{printf "%d",total}')
  sed -i 1,${diskcnt}'d' $_tmpfile

  RKB_SUM=0
  WKB_SUM=0

  for DISKS in $(grep -e "^sd" -e "^cc" -e "^hd" $_tmpfile | awk '{print $1}' | sort -u)
  do
    RKB_TMP=$(grep "${DISKS} "  $_tmpfile | awk '{ if( $3 != "0.00" ) {total+=$3;cnt+=1;printf "%f\n", total/cnt}}' | tail -1)
    if [ "$RKB_TMP" != "" ] ; then
      RKB_SUM=$(echo $RKB_SUM $RKB_TMP | awk '{printf "%f\n" , $1+$2/2}' )
    fi
    WKB_TMP=$(grep "${DISKS} "  $_tmpfile | awk '{ if( $4 != "0.00" ) {total+=$4;cnt+=1;printf "%f\n", total/cnt}}' | tail -1)
    if [ "$WKB_TMP" != "" ] ; then
      WKB_SUM=$(echo $WKB_SUM $WKB_TMP | awk '{printf "%f\n" , $1+$2/2}' )
    fi
  done
 
   _stat=$RKB_SUM
  _var=rkb
  _result=${_result}${_var}"="${_stat}"&"

  _stat=$WKB_SUM
  _var=wkb
  _result=${_result}${_var}"="${_stat}"&"

  echo $(echo $_result | sed -e 's/\&$//' )

  \rm -f $_tmpfile
  return 0

}


CPUIDLE=$(top -bn2   | grep "^Cpu" |tail -1 | awk -F "%" '{print $4}' | awk -F ","  '{print $NF}' )
IOUTIL=$(iostat -x 1 2  | grep "%util" -A 1 | tail -1 | awk '{print $NF}')
LOAD=$(w |  head -1 | awk -F ":" '{print $NF}')

QUESTION1=$(. /root/.bash_profile; mysqladmin -u root -h127.0.0.1  status  |grep Uptime | awk  '{print $6}')
sleep 5
QUESTION2=$(. /root/.bash_profile; mysqladmin -u root -h127.0.0.1  status  |grep Uptime | awk  '{print $6}')
QPS=$(echo $QUESTION2  $QUESTION1 5 | awk '{total=($1-$2)/5};{printf "%d",total}')

IOUTIL=$(getstat_ioutil)
IOUTIL=$(echo $IOUTIL | awk -F '=' '{print $NF}')
IORWKB=$(getstat_iorwkb)
IOREAD_KBPS=$(echo $IORWKB | awk -F '&' '{print $1}' | awk -F '=' '{print $NF }' )
IOWRN_KBPS=$(echo $IORWKB | awk -F '&' '{print $2}' | awk -F '=' '{print $NF }' )
NETFLAG=$(/sbin/ifconfig |head -1 | awk  '{print $1}' )
NETINFO=$( sar -n DEV  1 5  | grep Average | grep $NETFLAG )
NET_RX_BPS=$(echo $NETINFO | awk '{printf "%d", $5/1024}'   )
NET_TX_BPS=$(echo $NETINFO | awk '{printf "%d", $6/1024}'   )


echo "($HOST -- $CURRENT) LOAD = $LOAD" >> $LOGFILE 
echo "($HOST -- $CURRENT) QPS = $QPS" >> $LOGFILE 
echo "($HOST -- $CURRENT) CPUIDLE = $CPUIDLE" >> $LOGFILE 
echo "($HOST -- $CURRENT) IOUTIL = $IOUTIL %" >> $LOGFILE 
echo "($HOST -- $CURRENT) IOREAD_KBPS = $IOREAD_KBPS"  >> $LOGFILE 
echo "($HOST -- $CURRENT) IOWRN_KBPS = $IOWRN_KBPS"  >> $LOGFILE 
echo "($HOST -- $CURRENT) NET_RX_KBPS = $NET_RX_BPS"  >> $LOGFILE 
echo "($HOST -- $CURRENT) NET_TX_KBPS = $NET_TX_BPS"  >> $LOGFILE 

exit 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值