一般情况下,我们只需要监控程序进程在没在就可以了。但是这次遭遇了这样的事,公司开发的程序,程序进程还在,但是死锁了。导致大范围的影响,更要命的是根本不知道问题出在哪里,还是别的测试部同事帮忙发现的,真是丢尽运维的脸了…
为避免下次再遭遇到这样的情况,分析了这次进程死锁的现象,发现死锁会占用100%的cpu,正常情况下只占用10%以内。决定编写nagios插件,用来监控程序占用的资源,包括cpu,内存等。
一、shell脚本需求分析:
能设置cpu,mem的阈值,资源占用超过阈值就报警。
要能判断这个进程是否存在,若有一个不存在,则报警。
二、shell脚本执行效果如下:
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 $"codetitle">复制代码 代码如下:
[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 $"codetitle">复制代码 代码如下:
[root@yckj scripts]# sh component_resource.sh--cpu 50 --mem 50
Current VueDaemon VueCenter VueAgent VueCache VueSERVER is down.
[root@yckj scripts]# echo $"codetitle">复制代码 代码如下:
[root@center230 libexec]# catcomponent_resource.sh
#!/bin/sh
#author:yangrong
#date:2014-05-20
#mail:10286460@qq.com
#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
四、后话:
随着近日编写shell脚本越来越多,有时难免会回改以前所写脚本,经常要看一段时间才能看懂。
为方便后续的维护,在脚本当中,每一个函数,每一段功能,都做备注,方便以后自己或他人来进行维护。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 冷漠.2011 《冷漠的爱DSD》[WAV+CUE][1.2G]
- 陈明《流金岁月精逊【中唱】【WAV+CUE】
- 群星《Jazz-Ladies1-2爵士女伶1-2》HQCD/2CD[原抓WAV+CUE]
- 群星《美女私房歌》(黑胶)[WAV分轨]
- 郑源.2009《试音天碟》24BIT-96KHZ[WAV+CUE][1.2G]
- 飞利浦试音碟 《环球群星监听录》SACD香港版[WAV+CUE][1.1G]
- 车载音乐最强享受《车载极致女声精选CD》[WAV分轨][1G]
- 童宇.2024-爱情万年历【TOUCH音乐】【FLAC分轨】
- 黄晓君.2010-丽风金典系列VOL.1.2CD【丽风】【WAV+CUE】
- 黄晓君.2011-丽风金典系列VOL.2【丽风】【WAV+CUE】
- 群星1992《天碟国语金曲精选》香港首版[WAV+CUE][1G]
- 萧敬腾《王妃》台湾首版[WAV分轨][1G]
- 陈奕迅2023《CHIN UP》EAS MUSIC[WAV+CUE][1.2G]
- 黄心懋《曾经有个女孩》滚石首版[WAV+CUE]
- 群星《车宴(紫银合金AQCD)》[原抓WAV+CUE]