目標:編寫一個簡單的nagios腳本,實現監控client上的nginx進程是否啟動,假如沒啟動的話發出報警。
首先在master上對nagios的配置文件進行設置,修改services.cfg文件,在最末尾添加上以下內容:
define service{use local-service,services-pnphost_name centos1service_description CheckNginxState #監控服務的名稱check_period 24x7notification_options c #表明critical的情況時發出報警check_command check_nrpe!check_nginx #定義執行命令的名稱,需與客戶機上的nrpe.cfg上的定義一致}
補充一點是對客戶機添加腳本與master的commands.cfg無關,commands.cfg只定義面對master的本地服務的。本次我們是對客戶機增加服務,因此就無需在master的commands.cfg上定義我們新增的命令了。這個問題當時困擾了我很長時間才發現。
轉到客戶機上,修改nagios上的nrpe.cfg文件,添加上以下內容:
command[check_nginx]=/usr/local/nagios/libexec/check_nginx.sh
解析一下這行文本的含義:
check_nginx,命令的名稱,正如上面所說,需要與master上的servers.cfg中的check_command所引用的名稱一致。
/usr/local/nagios/libexec/check_nginx.sh,這是腳本在客戶機上的實際位置。
接下來編寫check_nginx.sh這個腳本,這個腳本需放在/usr/local/nagios/libexec/下。腳本內容如下:
#!/bin/basha=`ps -e|grep nginx|wc -l`if [ -n $a ];then echo "nginx is running." exit 0else echo "nginx is NOT running." exit 2fi
在這個腳本中,當檢測到nginx進程正在運行時,腳本會返回0給nagios,代表nginx正常運行;當檢測到nginx進程不存在時,會返回2給nagios,觸發critical告警。
把腳本保存并加上執行權限,重啟一下master的nagios服務,即可生效。
新聞熱點
疑難解答