|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
欢迎大家来到仓酷云论坛!一样平常情形下,我们只必要监控步伐历程在没在就能够了。可是此次遭受了如许的事,公司开辟的步伐,步伐历程还在,可是逝世锁了。招致年夜局限的影响,更要命的是基本不晓得成绩出在那里,仍是其余测试部同事协助发明的,真是丢尽运维的脸了…
为制止下次再遭受到如许的情形,剖析了此次历程逝世锁的征象,发明逝世锁会占用100%的cpu,一般情形下只占用10%之内。决意编写nagios插件,用来监控步伐占用的资本,包含cpu,内存等。
1、shell剧本需求剖析:
能设置cpu,mem的阈值,资本占用凌驾阈值就报警。
要能判别这个历程是不是存在,如有一个不存在,则报警。
2、shell剧本实行效果以下:
1、假如输出格局不准确,则输入匡助信息
[root@center230libexec]#shcomponent_resource.sh
Usageparament:
component_resource.sh[--cpu][--mem]
Example:
component_resource.sh--cpu50--mem50
2、若没超越阈值,输入资本占用情形,加入值为0
[root@center230libexec]#shcomponent_resource.sh--cpu50--mem50
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@center230libexec]#echo$?
0
3、若超越阈值,输入资本占用情形,加入值为2
[root@center230libexec]#shcomponent_resource.sh--cpu5--mem5
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@center230libexec]#echo$?
2
4、若历程不存在,输入down失落的历程,和一般利用中的历程资本情形,加入值为2
[root@yckjscripts]#shcomponent_resource.sh--cpu50--mem50
CurrentVueDaemonVueCenterVueAgentVueCacheVueSERVERisdown.
[root@yckjscripts]#echo$?
2
3、Shell剧本代码以下:
[root@center230libexec]#catcomponent_resource.sh
#!/bin/sh
#author:yangrong
#date:2014-05-20
#mail:10286460@qq.com
#pragrom_list=(VueDaemonVueCenterVueAgentVueCacheVueSERVERVUEConnectorMyswitchSlirpvde)
pragrom_list=(VueDaemonVueCenterVueAgentVueCacheVueSERVER)
####猎取cpu阈值和mem阈值#######
case$1in
--cpu)
cpu_crit=$2
;;
--mem)
mem_crit=$2
;;
esac
case$3in
--cpu)
cpu_crit=$4
;;
--mem)
mem_crit=$4
;;
esac
###判别传参数目,假如不为4,则var值为1,var0则一般####
if[[$1==$3]];then
var=1
elif[$#-ne4];then
var=1
else
var=0
fi
###打印毛病提醒信息
if[$var-eq1];then
echo"Usageparament:"
echo"$0[--cpu][--mem]"
echo""
echo"Example:"
echo"$0--cpu50--mem50"
exit
fi
###把不存在的历程放一变量中
num=$((${#pragrom_list[@]}-1))
NotExist=""
fordigitin`seq0$num`
do
a=`ps-ef|grep-vgrep|grep${pragrom_list[$digit]}|wc-l`
if[$a-eq0];then
NotExist="$NotExist${pragrom_list[$digit]}"
unsetpragrom_list[$digit]
fi
done
#echo"pragrom_list=${pragrom_list[@]}"
####对照历程所占资本与阈值巨细
cpu_use_all=""
mem_use_all=""
compare_cpu_temp=0
compare_mem_temp=0
fornin${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"
exit2
###假如cpu对照值为1,则代表有历程占用凌驾阈值,则加入值为2
elif[["$compare_cpu_temp"==1]];then
echo-e"$cpu_use_all;$mem_use_all"
exit2
##假如mem对照值为1,则代表为历程mem占用凌驾阈值,则加入值为2
elif[[$compare_mem_temp==1]];then
echo-e"$cpu_use_all;$mem_use_all"
exit2
##不然则一般输入,并输入所占cpu与内存比例
else
echo-e"$cpu_use_all;$mem_use_all"
exit0
fi
4、后话:
跟着克日编写shell剧本愈来愈多,偶然不免会回改之前所写剧本,常常要看一段工夫才干看懂。
为便利后续的保护,在剧本傍边,每个函数,每段功效,都做备注,便利今后本人或别人来举行保护。
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们! |
|