仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 891|回复: 8
打印 上一主题 下一主题

[shell编程] 给大家带来shell剧本监控Nagios插件步伐占用资本

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:14:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!
简单生活 该用户已被删除
沙发
发表于 2015-1-15 07:41:21 | 只看该作者

给大家带来shell剧本监控Nagios插件步伐占用资本

沙发???
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-21 10:39:32 | 只看该作者
期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?
admin 该用户已被删除
地板
发表于 2015-1-30 15:53:48 | 只看该作者
其次,Linux简单易学,因为我们初学者只是学的基础部分,Linux的结构体系非常清晰,再加上老师循序渐进的教学以及耐心的讲解,使我们理解起来很快,短期内就基本掌握了操作和运行模式。
简单生活 该用户已被删除
5#
发表于 2015-2-6 14:51:23 | 只看该作者
对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-16 21:45:28 | 只看该作者
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-5 12:53:55 | 只看该作者
用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。
8#
发表于 2015-3-12 09:34:25 | 只看该作者
这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?
小妖女 该用户已被删除
9#
发表于 2015-3-19 23:03:13 | 只看该作者
清楚了解网络的基础知识,特别是在Linux下应用知识,如接入internet等等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 14:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表