lijm1522 发表于 2018-8-17 08:25:18

shell 实现memcache缓存命中率监控脚本

#!/bin/bash  
###############################
  
#检查memcached的命中率
  
#加载nagios自带utils.sh
  
###############################
  
#source /usr/local/nagios/libexec/utils.sh
  
print_usage()
  
{
  echo "check_memcached -H IP -P port -w warning -c critical"
  
}
  
###################
  
#获取命令行执行参数
  
###################
  
if[ $# == 0 ];then
  print_usage;
  exit;
  
else
  
while test -n "$1";do
  case "$1" in
  -H)
  host=$2
  shift
  ;;
  -P)
  port=$2
  shift
  ;;
  -w)
  warning=$2
  shift
  ;;
  -c)
  critical=$2
  shift
  ;;
  *)
  echo "Unknown argument:$1"
  print_usage
  exit $STATE_UNKNOWN
  ;;
  esac
  shift
  
done
  
fi
  
########################
  
#function div_f()
  
#检查参数,返回两个数字比
  
########################
  
function div_f()
  
{
  ref=`awk -v num_a=$1 -v num_b=$2 'BEGIN{printf "%0.2f \n",num_a/num_b}'`;
  echo $ref;
  
}
  
##################
  
#得到命中率函数
  
##################
  
function getMemcachedHits()
  
{
  memcachedinfo=`/usr/local/nagios/libexec/check_tcp -H $host -p $port -E -s 'stats\r\nquit\r\n' -e 'uptime' | tr "\r" "@"`
  get_hits=`echo $memcachedinfo | grep -o "@ STAT get_hits *"| awk '{print $4}'`
  cmd_get=`echo $memcachedinfo | grep -o "@ STAT cmd_get *"| awk '{print $4}'`
  div_f $get_hits $cmd_get;
  
}
  
hits=`getMemcachedHits $host $port`;
  
##################
  
#得到命中率所在区间
  
##################
  
function re_rang()
  
{
  rang=$hits;
  interval_a=$critical;
  interval_b=$warningl
  if [[ $rang < $interval_a ]];then
  echo "0";
  elif [[ $rang < $interval_b ]];then
  echo "1";
  elif [[ $rang > $interval_b ]]||[[ $rang == $interval_b ]] ;then
  echo "2";
  else
  return;
  fi
  
}
  
res=`re_rang $critical $warning $hits`;
  
case "$res" in
  0)
  echo "Critical memcached_hits=$hits|memcached_hits=$hits;$warning;$critical;"
  exit $STATE_CRITICAL
  ;;
  1)
  echo "Warningmemcached_hits=$hits|memcached_hits=$hits;$warning;$critical;"
  exit $STATE_WARNING
  ;;
  2)
  echo "Okmemcached_hits=$hits|memcached_hits=$hits;$warning;$critical;"
  exit $STATE_OK
  ;;
  *)
  echo "Unkown"
  exit $STATE_UNKNOWN
  ;;
  
esac


页: [1]
查看完整版本: shell 实现memcache缓存命中率监控脚本