Nagios通過(guò)MSN/飛信發(fā)送報(bào)警通知
Nagios通過(guò)MSN/飛信發(fā)送報(bào)警通知
1、msn報(bào)警
先在這里網(wǎng)上下載***的msn類文件,這個(gè)下載后其實(shí)是一套完整的msnbot的php程序,我們這里只是使用了其中的msn.class.php這個(gè)文件。
遵循nagios的標(biāo)準(zhǔn)結(jié)構(gòu),程序文件都會(huì)放在/usr/local/nagios/libexec文件夾下,所以我在此文件夾下創(chuàng)建phpmsnclass文件夾,將msn.class.php文件放置其中,并在此目錄下創(chuàng)建用于發(fā)送msn報(bào)警的php程序,內(nèi)容如下。
- # cat sendmsnmsg.php
- #!/usr/local/php529/bin/php -q
- include_once('msn.class.php');
- $msn_username ='YOUR_MSN_ID'; //消息發(fā)送人的msn帳號(hào)
- $msn_password = "yourpassword"; //消息發(fā)送人msn密碼
- $msn_list = array('somebody1@hotmail.com','somebody2@hotmail.com'); //消息接收人msn地址,這里可選,因?yàn)闀?huì)使用nagios傳遞過(guò)來(lái)的地址
- $fp=fopen('/tmp/tmp/1','r'); //1這個(gè)文件是消息發(fā)送的內(nèi)容,這個(gè)文件由nagios自動(dòng)生成,路徑根據(jù)自己實(shí)際自行修改
- $file="";
- while (! feof($fp)){
- $cont=fgets($fp);
- $file=$file.$cont; //拼接報(bào)警消息內(nèi)容
- }
- $msn =new MSN('MSNP15'); //采用MSNP15協(xié)議,支持離線消息
- if (!$msn->connect($msn_username,$msn_password)) {
- echo "Error for connect to MSN networkn";
- echo "$msn->errorn";
- exit;
- }
- else {
- $msn->sendMessage("$file",$argv[1]); //將$file內(nèi)容發(fā)送給$argv[1]傳遞進(jìn)來(lái)的msn消息接收者。
- }
- fclose($fp);
- ?>
將此文件設(shè)置可執(zhí)行權(quán)限,就可以進(jìn)行測(cè)試了,首先在1文件中放入些內(nèi)容比如
- # cat 1
- this is a test by wenzizone.cn
然后執(zhí)行
- ./sendmsnmsg.php somebody@hotmail.com //后面跟的這個(gè)是接收人msn地址
可以看到下圖:

說(shuō)明msn發(fā)送是正常的。
2、飛信報(bào)警
首先到網(wǎng)上下載飛信的php寫(xiě)的api接口,解壓后,同樣在/usr/local/nagios/libexec創(chuàng)建phpfetion目錄,將class_fetion.php放到此目錄下,然后創(chuàng)建發(fā)送短信的php程序,如下
- #!/usr/local/php529/bin/php -q
- include_once('class_fetion.php');
- $sms_username = "1381126xxxx"; //飛信帳號(hào)
- $sms_password = "your password"; //飛信密碼
- $fp=fopen('/tmp/tmp/1','r'); //同msn內(nèi)容
- $file="";
- while (! feof($fp)){
- $cont=fgets($fp);
- $file=$file.$cont;
- }
- $fetion = new fetion($sms_username,$sms_password);
- $fetion->init() or die("fetion init failure!n");
- $fetion->sent_sms('tel:'.$argv[1],$file); //根據(jù)傳送進(jìn)來(lái)的電話發(fā)送報(bào)警內(nèi)容
- fclose($fp);
- ?>
分配sendsms.php可執(zhí)行權(quán)限,然后進(jìn)行測(cè)試,執(zhí)行
- ./sendsms.php 13810xxxxxx //后面這個(gè)是接受消息的手機(jī)號(hào)
用不了多一會(huì)就會(huì)收到消息,消息內(nèi)容和msn那條一樣,因?yàn)槲覀兊臏y(cè)試內(nèi)容不變。
3、和nagios的結(jié)合使用
首先編輯command.cfg文件,添加新的如下內(nèi)容
- # 'notify-host-by-msn' command definition
- define command{
- command_name notify-host-by-msn
- command_line /usr/bin/printf "%b" "***** Nagios *****nNotification Type: $NOTIFICATIONTYPE$nHost: $HOSTNAME$nState: $HOSTSTATE$nIP: $HOSTADDRESS$nInfo: HOSTOUTPUT$nDate/Time: $LONGDATETIME$n" >/tmp/tmp/1 | $USER$/phpmsnclass/sendmsnmsg.php $CONTACTEMAIL$
- }
- # 'notify-host-by-fetion' command definition
- define command{
- command_name notify-host-by-fetion
- command_line /usr/bin/printf "%b" "***** Nagios *****nNotification Type: $NOTIFICATIONTYPE$nHost: $HOSTNAME$nState: $HOST
- STATE$nIP: $HOSTADDRESS$nInfo: $HOSTOUTPUT$nDate/Time: $LONGDATETIME$n" >/tmp/tmp/1 | $USER1$/phpfetion/sendsms.php $CONTACTPAGER$
- }
然后修改contacts.cfg文件,如下
- define contact{
- contact_name nagiosadmin
- alias Nagios Admin
- email http://www.wenzizone.cn/
- pager 13810xxxxxx
- host_notification_commands notify-host-by-msn
- host_notification_options d,u
- host_notification_period 24x7
- host_notifications_enabled 1
- service_notifications_enabled 1
- service_notification_period 24x7
- service_notification_options w,u,r
- service_notification_commands notify-service-by-msn
- }
- define contact{
- contact_name nagiosadmin01
- alias Nagios Admin
- email http://www.wenzizone.cn/
- pager 13810xxxxxx
- host_notification_command snotify-host-by-fetion
- host_notification_options d,u
- host_notification_period 24x7
- host_notifications_enabled 1
- service_notifications_enabled 1
- service_notification_period 24x7
- service_notification_options w,u,r
- service_notification_commands notify-service-by-fetion
- }
接下來(lái)再host或者service上填上對(duì)應(yīng)的contact然后就可以隨時(shí)收到相應(yīng)的報(bào)警了。
蚊子在這兩天的測(cè)試用發(fā)現(xiàn),飛信報(bào)警的送達(dá)率還是很高的,基本是每條都能收到,但是msn的送達(dá)率就令人擔(dān)憂了,我發(fā)送10個(gè)能收到一個(gè)就算不錯(cuò)了,所以還請(qǐng)根據(jù)自己測(cè)試情況酌情考慮。
另外一點(diǎn)需要注意的是msn或者飛信發(fā)送報(bào)警,接收人都必須是發(fā)送人msn或飛信的好友才行,不然是不能送達(dá)的。以上就是Nagios通過(guò)MSN/飛信發(fā)送報(bào)警通知。
【編輯推薦】