Shell 스 크 립 트 작성 Nagios 플러그 인 모니터링 프로그램 자원 점용

일반적인 상황 에서 우 리 는 프로그램 프로 세 스 가 없 는 것 만 감시 하면 된다.그러나 이번에 이런 일 을 당 해 회사 가 개발 한 절 차 는 절차 가 남아 있 지만 잠 겼 다.큰 영향 을 미 쳤 습 니 다.더 심각 한 것 은 문제 가 어디 에 있 는 지,아니면 다른 테스트 부 동료 들 이 발견 해 준 것 인지 모 르 는 것 입 니 다.정말 운 이 나 쁜 얼굴 입 니 다.
다음 에 이런 상황 이 발생 하지 않도록 이번 프로 세 스 의 잠 금 현상 을 분석 한 결과 잠 금 은 100%cpu 를 차지 하고 정상 적 인 상황 에서 10%이내 만 차지 하 는 것 으로 나 타 났 다.cpu,메모리 등 프로그램 이 사용 하 는 자원 을 감시 하기 위해 nagios 플러그 인 을 만 들 기로 했 습 니 다.
1.셸 스 크 립 트 수요 분석:
   cpu,mem 의 한도 값 을 설정 할 수 있 고 자원 이 한도 값 을 초과 하면 경고 합 니 다.
   이 프로 세 스 가 존재 하 는 지 여 부 를 판단 할 수 있 으 면 경찰 에 신고 하 십시오.
2.셸 스 크 립 트 의 실행 효 과 는 다음 과 같 습 니 다.
1.입력 형식 이 정확 하지 않 으 면 도움말 정 보 를 출력 합 니 다.

[root@center230 libexec]# shcomponent_resource.sh
Usage parament:
   component_resource.sh [--cpu] [--mem]
 
Example:
   component_resource.sh --cpu 50 --mem 50
2.한도 값 을 초과 하지 않 으 면 출력 자원 의 점용 상황,종료 값 은 0 입 니 다.

[root@center230 libexec]# shcomponent_resource.sh  --cpu 50 --mem 50
VueSERVER_cpu_use=5.6% VueCache_cpu_use=1.9%VueAgent_cpu_use=0.0% VueCenter_cpu_use=0.0% VueDaemon_cpu_use=0.0%;VueSERVER_mem_use=0.2% VueCache_mem_use=7.4% VueAgent_mem_use=0.5% VueCenter_mem_use=0.1%VueDaemon_mem_use=0.0%
[root@center230 libexec]# echo $?
0
3.한도 값 을 초과 하면 출력 자원 의 점용 상황,종료 값 은 2

[root@center230 libexec]# shcomponent_resource.sh  --cpu 5 --mem 5
VueSERVER_cpu_use=9.4% VueCache_cpu_use=0.0%VueAgent_cpu_use=0.0% VueCenter_cpu_use=0.0% VueDaemon_cpu_use=0.0%;VueSERVER_mem_use=0.2% VueCache_mem_use=7.4% VueAgent_mem_use=0.5%VueCenter_mem_use=0.1% VueDaemon_mem_use=0.0%
[root@center230 libexec]# echo $?
2
4.프로 세 스 가 존재 하지 않 으 면 다운 프로 세 스 를 출력 하고 정상적으로 사용 중인 프로 세 스 자원 의 경우 종료 값 은 2 입 니 다.

[root@yckj scripts]# sh component_resource.sh--cpu 50 --mem 50
Current VueDaemon VueCenter VueAgent VueCache VueSERVER is down.
[root@yckj scripts]# echo $?
2
3.Shell 스 크 립 트 코드 는 다음 과 같 습 니 다.
 
[root@center230 libexec]# catcomponent_resource.sh
#!/bin/sh
#author:yangrong
#date:2014-05-20
#mail:[email protected]
 
#pragrom_list=(VueDaemon VueCenter VueAgentVueCache VueSERVER VUEConnector Myswitch Slirpvde)
pragrom_list=(VueDaemon VueCenter VueAgentVueCache VueSERVER)
 
#### cpu mem #######
case $1 in
 --cpu)
   cpu_crit=$2
  ;;
 --mem)
   mem_crit=$2
  ;;
esac
 
case $3 in
 --cpu)
   cpu_crit=$4
  ;;
 --mem)
   mem_crit=$4
  ;;
esac
 
 
 
### , 4, var 1,var0 ####
if [[ $1 == $3  ]];then
       var=1  
elif [ $# -ne 4 ] ;then
       var=1
else
       var=0
fi
 
 
###
if [ $var -eq 1 ];then
   echo "Usage parament:"
   echo "    $0 [--cpu][--mem]"
   echo ""
   echo "Example:"
   echo "    $0 --cpu 50 --mem50"
   exit
fi
 
 
###
num=$(( ${#pragrom_list[@]}-1 ))
 
NotExist=""
for digit in `seq 0 $num`
do
 a=`ps -ef|grep -v grep |grep ${pragrom_list[$digit]}|wc -l`
  if[ $a -eq 0 ];then
    NotExist="$NotExist ${pragrom_list[$digit]}"
    unset pragrom_list[$digit]
  fi
done
#echo"pragrom_list=${pragrom_list[@]}"
 
 
 
####
cpu_use_all=""
mem_use_all=""
compare_cpu_temp=0
compare_mem_temp=0
for n in ${pragrom_list[@]}
do
  cpu_use=`top -b -n1|grep $n|awk '{print $9}'`
  mem_use=`top -b -n1|grep $n|awk '{print $10}'`
   if[[ $cpu_use == "" ]];then
       cpu_use=0
   fi
   if[[ $mem_use == "" ]];then
       mem_use=0
   fi
 
  compare_cpu=`echo "$cpu_use > $cpu_crit"|bc`
  compare_mem=`echo "$mem_use > $mem_crit"|bc` 
   if[[ $compare_cpu == 1  ]];then
       compare_cpu_temp=1
   fi
   if[[ $compare_mem == 1  ]];then
       compare_mem_temp=1
   fi
 
  cpu_use_all="${n}_cpu_use=${cpu_use}% ${cpu_use_all}"
  mem_use_all="${n}_mem_use=${mem_use}% ${mem_use_all}"
done
 
 
### , down。 2
if [[ "$NotExist" != ""]];then
 echo -e "Current ${NotExist} isdown.$cpu_use_all;$mem_use_all"
 exit 2
### cpu 1, , 2
elif [[ "$compare_cpu_temp" == 1]];then
   echo -e "$cpu_use_all;$mem_use_all"
   exit 2
 
## mem 1, mem , 2
elif [[ $compare_mem_temp == 1 ]];then
   echo -e "$cpu_use_all;$mem_use_all"
   exit 2
## , cpu
else
   echo -e "$cpu_use_all;$mem_use_all"
   exit 0
fi
4.뒷 말:
  최근 셸 스 크 립 트 를 작성 하 는 것 이 많아 지면 서 예전 에 쓴 스 크 립 트 를 바 꾸 는 것 을 피하 기 어 려 울 때 가 있 습 니 다.한 동안 봐 야 알 아 볼 수 있 습 니 다.
  후속 유지 보 수 를 편리 하 게 하기 위해 스 크 립 트 에서 모든 함수,모든 기능 에 대해 설명 을 하고 나중에 자신 이나 다른 사람 이 유지 할 수 있 도록 합 니 다.

좋은 웹페이지 즐겨찾기