一般情況下,我們只需要監控程序進程在沒在就可以了。但是這次遭遇了這樣的事,公司開發的程序,程序進程還在,但是死鎖了。導致大范圍的影響,更要命的是根本不知道問題出在哪里,還是別的測試部同事幫忙發現的,真是丟盡運維的臉了…
為避免下次再遭遇到這樣的情況,分析了這次進程死鎖的現象,發現死鎖會占用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 $?
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、若進程不存在,輸出down掉的進程,以及正常使用中的進程資源情況,退出值為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
三、Shell腳本代碼如下:
代碼如下:
[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
新聞熱點
疑難解答