nagios插件程序提供兩個(gè)返回值:一個(gè)是插件的退出狀態(tài)碼,另一個(gè)是插件在控制臺(tái)上打印的第一行數(shù)據(jù)。退出狀態(tài)碼可以被nagios主程序
成都創(chuàng)新互聯(lián)IDC提供業(yè)務(wù):成都電信服務(wù)器托管,成都服務(wù)器租用,成都電信服務(wù)器托管,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。
作為判斷被監(jiān)控系統(tǒng)服務(wù)狀態(tài)的依據(jù),控制臺(tái)打印的第一行數(shù)據(jù)可以被nagios主程序作為被監(jiān)控系統(tǒng)服務(wù)狀態(tài)的補(bǔ)充說明
會(huì)顯示在管理頁面里面。
為了管理nagios插件,nagios每查詢一個(gè)服務(wù)的狀態(tài)時(shí),就會(huì)產(chǎn)生一個(gè)子進(jìn)程,并且它使用來自該命令的輸出和退出狀態(tài)碼來
確定具體的狀態(tài)。nagios主程序可識(shí)別的狀態(tài)碼和說明如下:
OK 退出代碼 0--表示服務(wù)正常的工作
warning 退出代碼 1--表示服務(wù)處于告警狀態(tài)
critical 退出代碼 2--表示服務(wù)處于緊急,嚴(yán)重狀態(tài)
unknown 退出代碼 3--表示服務(wù)處于未知狀態(tài)
[root@RS1 services]# head -7 /usr/local/nagios/libexec/utils.sh
#! /bin/sh
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4
示例一:判斷/etc/passwd文件是否變化,利用nrpe的被動(dòng)模式
原理:利用md5sum進(jìn)行指紋收集 md5sum /etc/passwd > /etc/passwd.md5
利用md5sum -c /etc/passwd.md5對(duì)指紋進(jìn)行判別,出現(xiàn)OK則沒有變化,反之則變化了
監(jiān)控密碼文件是否被更改:
先做指紋庫
md5sum /etc/passwd > /etc/passwd.md5
在client上創(chuàng)建腳本vim /usr/local/nagios/libexec/check_passwd
#!/bin/bash
char=`md5sum -c /etc/passwd.md5 2>&1 |grep "OK"|wc -l`
if [ $char -eq 1 ];then
echo "passwd is OK"
exit 0
else
echo "passwd is changed"
exit 2
fi
######給腳本執(zhí)行權(quán)限
chmod +x /usr/local/nagios/libexec/check_passwd
#####定義check_passwd命令
vim /usr/local/nagios/etc/nrpe.cfg
command[check_passwd]=/usr/local/nagios/libexec/check_passwd
#####重啟nrpe服務(wù)
######在nagios主程序先手動(dòng)抓取數(shù)據(jù)
[root@RS1 libexec]# ./check_nrpe -H 192.168.1.11 -c check_passwd
passwd is OK
######在nagios主程序上定義service配置
vim /usr/local/nagios/etc/objects/services.cfg(主動(dòng)模式和被動(dòng)模式各自的services.cfg配置文件,各自分別管理)
define service{
use generic-service
host_name client02
service_description check_passwd
check_command check_nrpe!check_passwd
}
然后在nagios服務(wù)端進(jìn)行手動(dòng)抓取數(shù)據(jù):
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.11 -c check_passwd
出現(xiàn)數(shù)據(jù),表明基本已經(jīng)沒有問題,重啟服務(wù),觀察web平臺(tái)頁面,如下圖:
自定義監(jiān)控web url,用主動(dòng)模式監(jiān)控
[root@RS1 ~]# curl -I http://192.168.1.11/index.html 2>/dev/null|grep "OK"
HTTP/1.1 200 OK
[root@RS1 ~]# curl -I http://192.168.1.11/index.html 2>/dev/null|grep "OK"|wc -l
1
1、編寫執(zhí)行腳本
cd /usr/local/nagios/libexec
vim check_web_url
#!/bin/bash
char=`curl -I http://192.168.1.11/index.html 2>/dev/null|grep "OK"|wc -l`
if [ $char -eq 1 ];then
echo "the url is OK"
exit 0
else
echo "the url is wrong"
exit 2
fi
chmod +x check_web_url
2、添加check_web_url這個(gè)命令到commands.cfg配置文件中
############define command check_web_url##########
define command{
command_name check_web_url
command_line $USER1$/check_web_url
}
3、編輯servers.cfg文件
cd /usr/local/nagios/etc/services
vim web_url.cfg
define service{
use generic-service
host_name client02 監(jiān)控的主機(jī)192.168.1.11在hosts.cfg有定義
service_description web_url
check_period 24x7
check_interval 5
retry_interval 1
max_check_attempts 3
check_command check_web_url 因?yàn)槭侵鲃?dòng)模式
notification_period 24x7
notification_interval 30
notification_options w,u,c,r
contact_groups admins
}
4、檢測(cè)錯(cuò)誤,重啟服務(wù)
[root@RS1 services]# /etc/init.d/nagios checkconfig
Running configuration check...
OK.
[root@RS1 services]# /etc/init.d/nagios reload
Running configuration check...
Reloading nagios configuration...
done
成功截圖:
看下整體監(jiān)控效果:
實(shí)現(xiàn)郵件報(bào)警功能:
配置告警的步驟:
1、添加聯(lián)系人和聯(lián)系組contacts.cfg
define contact{
contact_name huang
use generic-contact ---》這里使用的模板就是模板文件中的contact定義
alias Nagios Admin
email 13817419446@139.com
}
將定義的contact_name添加到一個(gè)新組中
新增聯(lián)系組:
define contactgroup{
contactgroup_name mail_users 這里可以定義郵件組,手機(jī)短信組,等等
alias Nagios Administrators
members huang
}
2、添加報(bào)警的命令commands.cfg,這里使用默認(rèn)的命令,當(dāng)然你也可以自己編寫shell腳本或者其他語言腳本
3、調(diào)整聯(lián)系人的默認(rèn)模板
define contact{
name generic-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email 如果定義了手機(jī),這里可以加上notify-host-by-email,notify-host-by-pager,這里使用郵件告警,所以無需設(shè)置
register 0
}
4、在hosts、services配置文件中添加報(bào)警聯(lián)系人及報(bào)警組
然后修改模板中service、host的定義,將
contact_groups admins改為
contact_groups mail_users
當(dāng)然也可以不在模板中定義,在hosts、services配置文件中各自定義不同的報(bào)警方式和報(bào)警組
實(shí)驗(yàn):
將網(wǎng)站目錄下面的index.html文件mv到tmp目錄下,使他warning并觸發(fā)告警
mv /var/www/html/index.html /tmp
可以看見web平臺(tái)出現(xiàn)warning狀態(tài),查看nagios日志如圖:
然后查看郵件,發(fā)現(xiàn)沒有收到告警郵件,看日志發(fā)現(xiàn)是找不到mail命令,于是
yum -y install mailx
由于定義的services告警參數(shù):
service_notification_options w,u,c,r,f,s,表示監(jiān)控恢復(fù)正常也會(huì)觸發(fā)郵件于是將index.html重新放到網(wǎng)站目錄下
mv /tmp/index.html /var/www/html
稍微過幾分鐘可以發(fā)現(xiàn)監(jiān)控正常,查看nagios日志
再次查看郵件,如下:
簡(jiǎn)單基于mail告警功能實(shí)現(xiàn)
新建菜鳥學(xué)習(xí)交流群:584498750